Benutzer mit den meisten Antworten
MSSQL Codierung ändern

Frage
-
Hallo,
ich habe einige Zeilen in meine MSSQL Datenbank importiert, allerdings ist mir nun aufgefallen, dass irgendetwas bei der Codierung nicht stimmt, da ich seltsame Einträge angezeigt bekomme.
Hier mal ein Bsp:
Analyse &'26; Reporting
Planung &'26; SimulationEigentlich sollte dort statt &'26 ein & Zeichen stehen. Wie kann ich in MSSQL die Codierung auf UTF 8 oder 16 ändern, sodass diese Zeichen richtig dargestellt werden?
Antworten
-
Hi Jeff,
ich stand heute vor einer sehr ähnlichen herausforderung und musst da an diesen Forenbeitrag denken, ich habe mal Google nach deinem Dateiformat bemüht und mit einer meine Abrage auf eine *.tmx file umgebaut :-)
SQL Script:
declare @XML as xml select @XML = IV.BulkColumn from OpenRowSet (BULK 'd:\test.tmx', SINGLE_BLOB) AS IV; select x.i.value('../@tuid','int') tuid, x.i.value('../@datatype','varchar(255)') datatype, x.i.value('@lang','varchar(2)') lang, x.i.value('.', 'varchar(max)') as seg from @XML.nodes('tmx/body/tu/tuv') as x(i)
Um die Problematik mit den HTML Tags zu lösen, kannst du bei Google mal nach HTML Strip Funktionen suchen, diese kannst du dann auf die Spalte 'seg' anwenden, alternativ kannst du natürlich auch REPLACE() verwenden.
ich hoffe es Hilft
Theo
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 25. April 2012 15:08
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 15. Mai 2012 09:37
-
Hallo Jeff
Jeff_GER wrote:
Habe das ganze mit dem Tool "Data Import for SQL Server" importieren
lassen. Ursprünglich kommen die Einträge aus einer .tmx Datei, welche ich
mit Olifant als .txt. exportieren lassen habe. Codiert ist die .tmx Datei
in UTF-16. Die exportierte .txt, laut Windows, UTF-8.Ich vermute, das steht dort bereits so in der XML Datei drin, da diese XML codiert ist. Mit falscher Codierung hat dies nichts zu tun, lediglich damit, dass eben in XML versucht wird, auf Sonderzeichen zu verzichten und diese in eine Web-fähige Form zu bringen.
Wenn Du das raushaben willst, wirst Du wohl eine HTML decodierung über die Felder laufen lassen und die kodierten Sonderzeichen durch die richtigen Zeichen ersetzen müssen. Einige verschachtelte REPLACE() Aufrufe in einen Update Statement sollten das lösen können.
Die HTML Zeichenreferenz findest Du hier:
http://de.selfhtml.org/html/referenz/zeichen.htmGruss
Henry- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 25. April 2012 15:09
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 15. Mai 2012 09:37
Alle Antworten
-
Hi,
Was für einen Datentyp hat denn die Spalte?
in was für einer Codierung ist die Datei die du importiert hast?
wie hast du die Datei importiert?
mittels BCP oder SSIS in beiden fällen kannst du auch eine Codepage mitgeben.
ich würde die Datei in UTF-8 Datei in UTF-16 konvertieren und dann mittels BCP und der -w Option importieren.
bcp http://msdn.microsoft.com/en-us/library/ms162802.aspx , http://msdn.microsoft.com/en-us/library/ms190919.aspx
SSIS File Connection Manager http://msdn.microsoft.com/en-us/library/ms140266.aspx
Viele Grüße
Theo
-
Habe das ganze mit dem Tool "Data Import for SQL Server" importieren lassen. Ursprünglich kommen die Einträge aus einer .tmx Datei, welche ich mit Olifant als .txt. exportieren lassen habe. Codiert ist die .tmx Datei in UTF-16. Die exportierte .txt, laut Windows, UTF-8.
Mir ist allerdings aufgefallen, dass in der .tmx Datei noch & statt &'26; an der Stelle des & Zeichens steht. Scheinbar gibt es also schon ein Problem mit der Konvertierung von UTF 16 zu 8 und MSSQL hat damit garnichts zu tun... Werde ich wohl mal wieder ein paar Stündchen mit Trial & Error verbringen müssen, bis es durch Zufall irgendwann mal richtig klappt :D
-
Habe das ganze mit dem Tool "Data Import for SQL Server" importieren lassen. Ursprünglich kommen die Einträge aus einer .tmx Datei, welche ich mit Olifant als .txt. exportieren lassen habe. Codiert ist die .tmx Datei in UTF-16. Die exportierte .txt, laut Windows, UTF-8.
Mir ist allerdings aufgefallen, dass in der .tmx Datei noch & statt &'26; an der Stelle des & Zeichens steht.
keine Bange, dass ist nur eine unterschiedliche Darstellung des gleichen Zeichens in XML. Du kannst entweder ein Zeichen direkt eingeben solange es nicht der XML Syntax wiederspricht - z.b & oder auch <> etc. oder Du kannst den Wert als Hexadezimalwert mit &'26; uebergeben oder wenn es ein spezielles Zeichen ist, gibt es dafuer auch eine textuelle Beschreibung und dies waere bei "&" eben &
Analyse &'26; Reporting
Planung &'26; Simulationsind da jetzt Werte die Du im Inputfile siehst, oder die Werte welche Du in der DB siehst ? hast Du das korrekte Formatfile / Type angegeben ?
-
Hallo Jeff
Jeff_GER wrote:
Habe das ganze mit dem Tool "Data Import for SQL Server" importieren
lassen. Ursprünglich kommen die Einträge aus einer .tmx Datei, welche ich
mit Olifant als .txt. exportieren lassen habe. Codiert ist die .tmx Datei
in UTF-16. Die exportierte .txt, laut Windows, UTF-8.Ich vermute, das steht dort bereits so in der XML Datei drin, da diese XML codiert ist. Mit falscher Codierung hat dies nichts zu tun, lediglich damit, dass eben in XML versucht wird, auf Sonderzeichen zu verzichten und diese in eine Web-fähige Form zu bringen.
Wenn Du das raushaben willst, wirst Du wohl eine HTML decodierung über die Felder laufen lassen und die kodierten Sonderzeichen durch die richtigen Zeichen ersetzen müssen. Einige verschachtelte REPLACE() Aufrufe in einen Update Statement sollten das lösen können.
Die HTML Zeichenreferenz findest Du hier:
http://de.selfhtml.org/html/referenz/zeichen.htmGruss
Henry- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 25. April 2012 15:09
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 15. Mai 2012 09:37
-
sind da jetzt Werte die Du im Inputfile siehst, oder die Werte welche Du in der DB siehst ? hast Du das korrekte Formatfile / Type angegeben ?
Das sind die Werte, die sowohl im Inputfile (.csv), als auch in der DB stehen. In der XML steht dann die HTML Codierung mit &.
-
Wenn Du das raushaben willst, wirst Du wohl eine HTML decodierung über die Felder laufen lassen und die kodierten Sonderzeichen durch die richtigen Zeichen ersetzen müssen. Einige verschachtelte REPLACE() Aufrufe in einen Update Statement sollten das lösen können.
-
Hi,
&'26 ist der Hex Wert von &, ich habe hier eine Liste gefunden. http://htmlhelp.com/reference/html40/entities/special.html
Informationen zu XML und SQL Server findest du hier: http://msdn.microsoft.com/de-de/library/bb522493(v=sql.105).aspx
Viele Grüße
Theo
-
Hi Jeff,
ich stand heute vor einer sehr ähnlichen herausforderung und musst da an diesen Forenbeitrag denken, ich habe mal Google nach deinem Dateiformat bemüht und mit einer meine Abrage auf eine *.tmx file umgebaut :-)
SQL Script:
declare @XML as xml select @XML = IV.BulkColumn from OpenRowSet (BULK 'd:\test.tmx', SINGLE_BLOB) AS IV; select x.i.value('../@tuid','int') tuid, x.i.value('../@datatype','varchar(255)') datatype, x.i.value('@lang','varchar(2)') lang, x.i.value('.', 'varchar(max)') as seg from @XML.nodes('tmx/body/tu/tuv') as x(i)
Um die Problematik mit den HTML Tags zu lösen, kannst du bei Google mal nach HTML Strip Funktionen suchen, diese kannst du dann auf die Spalte 'seg' anwenden, alternativ kannst du natürlich auch REPLACE() verwenden.
ich hoffe es Hilft
Theo
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 25. April 2012 15:08
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 15. Mai 2012 09:37
-
Hallo Jeff_GER,
Hat Dir die Antwort geholfen?
Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Hallo Jeff_GER,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.