Konvertieren von Textwerten in SQL Server von UTF8 nach ISO 8859-1

8

Ich habe eine Spalte in SQL Server mit utf8 SQL_Latin1_General_CP1_CI_AS-Codierung. Wie kann ich den Text in der ISO 8859-1-Codierung konvertieren und speichern? Ich möchte in einer Abfrage auf SQL Server etwas tun. Irgendwelche Tipps?

  

Olá. Gostei tun jogo. Quando "Baixei" atéchei que não iria curtir muito

    
bobK 27.01.2015, 10:19
quelle

3 Antworten

13

Ich habe eine Funktion geschrieben, um UTF-8-Text zu reparieren, der in einem varchar -Feld gespeichert ist.

Um die festen Werte zu überprüfen, können Sie es wie folgt verwenden:

%Vor%

Ausgabe:

%Vor%

Der Code:

%Vor%     
Anthony Faull 09.02.2015, 14:54
quelle
1

Jason Penny hat auch geschrieben eine SQL-Funktion, um UTF-8 in Unicode (MIT-Lizenz) zu konvertieren, die an einem einfachen Beispiel für mich arbeitete :

%Vor%

Die angekreuzte Antwort von Anthony "sieht" besser für mich aus, aber vielleicht läuft beides, wenn man eine Konvertierung durchführt und irgendwelche Diskrepanzen untersucht?!

Außerdem haben wir den sehr hässlichen Code unten verwendet, um BMP-Seiten-Unicode-Zeichen zu erkennen, die als UTF-8 kodiert und dann von varchar in nvarchar-Felder konvertiert wurden, die in UCS-16 konvertiert werden können / p> %Vor%

Das oben genannte:

  • erkennt Multi-Byte-Sequenzen, die U + 0080 bis U + FFFF kodieren (U + 0080 bis U + 07FF ist als 110xxxxx 10xxxxxx codiert, U + 0800 bis U + FFFF ist als 1110xxxx 10xxxxxx 10xxxxxx codiert)
  • d. Es erkennt das Hex-Byte 0xC0 bis 0xEF gefolgt von Hex-Byte 0x80 bis 0xBF
  • ignoriert die ASCII-Steuerzeichen U + 0000 bis U + 001F
  • ignoriert Zeichen, die bereits korrekt in Unicode & gt; = U + 0100 (d. h. nicht UTF-8)
  • codiert sind
  • ignoriert die Unicode-Zeichen U + 0080 bis U + 00FF, wenn sie nicht Teil einer UTF-8-Sequenz zu sein scheinen, z. "Coöperatief".
  • verwendet nicht LIKE "% [X-Y]" für X = 0x80 bis Y = 0xBF wegen möglicher Kollationsprobleme
  • verwendet CONVERT (VARCHAR, CHAR (X)) anstelle von NCHAR, da wir Probleme mit der Konvertierung von NCHAR in den falschen Wert (für einige Werte) hatten.
  • ignoriert UTF-Zeichen, die größer als U + FFFF sind (4 bis 6 Byte-Folgen, die ein erstes Byte von hex 0xF0 bis 0xFD haben)
robocat 26.06.2015 03:35
quelle
0

Ich habe die Abfrage gefunden, die ich tun muss, nur die Verschlüsselung noch nicht.

%Vor%     
bobK 27.01.2015 13:52
quelle