SQL Umlaute bei Umwandlung von RTF zu Plain Text

cr0wfir3

Cadet 1st Year
Registriert
Sep. 2008
Beiträge
12
Hallo.

Ich habe eine Funktion gefunden die RTF's in Plain Text umwandelt.
Mein Problem ist jetzt, dass Umlaute nicht Korrekt übernommen werden :(
Mein Programm: Microsoft SQL Server Management Studio.

Den Code für die Funktion hab ich hier gefunden:

Code:
CREATE FUNCTION	dbo.fnParseRTF
(
	@rtf VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
BEGIN
	DECLARE	@Stage TABLE
		(
			Chr CHAR(1),
			Pos INT
		)

	INSERT		@Stage
			(
				Chr,
				Pos
			)
	SELECT		SUBSTRING(@rtf, Number, 1),
			Number
	FROM		master..spt_values
	WHERE		Type = 'p'
			AND SUBSTRING(@rtf, Number, 1) IN ('{', '}')

	DECLARE	@Pos1 INT,
		@Pos2 INT

	SELECT	@Pos1 = MIN(Pos),
		@Pos2 = MAX(Pos)
	FROM	@Stage

	DELETE
	FROM	@Stage
	WHERE	Pos IN (@Pos1, @Pos2)

	WHILE 1 = 1
		BEGIN
			SELECT TOP 1	@Pos1 = s1.Pos,
					@Pos2 = s2.Pos
			FROM		@Stage AS s1
			INNER JOIN	@Stage AS s2 ON s2.Pos > s1.Pos
			WHERE		s1.Chr = '{'
					AND s2.Chr = '}'
			ORDER BY	s2.Pos - s1.Pos

			IF @@ROWCOUNT = 0
				BREAK

			DELETE
			FROM	@Stage
			WHERE	Pos IN (@Pos1, @Pos2)

			UPDATE	@Stage
			SET	Pos = Pos - @Pos2 + @Pos1 - 1
			WHERE	Pos > @Pos2

			SET @rtf = STUFF(@rtf, @Pos1, @Pos2 - @Pos1 + 1, '')
		END

	SET	@Pos1 = PATINDEX('%\cf[0123456789][0123456789 ]%', @rtf)

	WHILE @Pos1 > 0
		SELECT	@Pos2 = CHARINDEX(' ', @rtf, @Pos1 + 1),
			@rtf = STUFF(@rtf, @Pos1, @Pos2 - @Pos1 + 1, ''),
			@Pos1 = PATINDEX('%\cf[0123456789][0123456789 ]%', @rtf)

	SELECT	@rtf = REPLACE(@rtf, '\pard', ''),
		@rtf = REPLACE(@rtf, '\par', ''),
		@rtf = LEFT(@rtf, LEN(@rtf) - 1)

	SELECT	@rtf = REPLACE(@rtf, '\b0 ', ''),
		@rtf = REPLACE(@rtf, '\b ', '')

	SELECT	@rtf = STUFF(@rtf, 1, CHARINDEX(' ', @rtf), '')

	RETURN	@rtf
END

Ein RTF-Beispiel:
{\rtf1\ansi\ansicpg1252\uc1\deff0{\fonttbl {\f0\fswiss\fcharset0\fprq2 Arial;} {\f1\froman\fcharset2\fprq2 Symbol;}} {\colortbl;\red0\green0\blue0;\red255\green255\blue255;} {\stylesheet{\s0\itap0\nowidctlpar\f0\fs24 [Normal];}{\*\cs10\additive Default Paragraph Font;}} {\*\generator TX_RTF32 14.0.520.503;}{\info{\*\hlinkbase C:\'5cProgram Files\'5cOrdner\'5cProgramm.net\'5c}} \deftab1134\paperw11894\paperh16834\margl720\margt720\margr720\margb720\widowctrl\formshade\sectd \headery720\footery720\pgwsxn11894\pghsxn16834\marglsxn720\margtsxn720\margrsxn720\margbsxn720\pard\itap0\nowidctlpar\plain\f0\fs20 Ist das M\loch\f0\hich\f0\'f6glich \'e4\'fc\'f6\par\par }

Und das sollte eigentlich ausgegeben werden:
Ist das Möglich äüö

Aber ausgegeben wird folgendes:
Ist das M\loch\f0\hich\f0\'f6glich \'e4\'fc\'f6


Kann mir jemand sagen ob es möglich ist die richtigen Umlaute auszugeben?

LG
 
Ist ja nur als Parser gekennzeichnet. RTF kann aber auch mit verschiedenen Codepages umgehen. Wenn die nicht abgefangen werden, dann sieht das Ergebnis so wie bei dir aus.

Kannst Du eventuell die Quelle in reinen Text umwandeln oder brauchst Du z.B. die Formatierungen?
 
Zurück
Oben