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:
Ein RTF-Beispiel:
Und das sollte eigentlich ausgegeben werden:
Aber ausgegeben wird folgendes:
Kann mir jemand sagen ob es möglich ist die richtigen Umlaute auszugeben?
LG
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