Einzelnen Beitrag anzeigen

Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Russische Übersetzung funktioniert nicht auf rus. Window

  Alt 18. Dez 2008, 18:05
Das könnte jemand, der für Unicode Werbung machen will, vermutlich gut als abschreckendes Beispiel verwenden.

UTF8Decode müsste aus der UTF8-Kodierung wieder UCS2 bzw. einen Widestring machen, der sich auf den Systemen eigentlich nicht unterscheiden kann, da es mit den lokalen Einstellungen gar nichts zu tun hat. Wenn dieser danach aber einem Ansistring zugewiesen wird, bastelt Delphi automatisch Aufrufe von WideCharToMultiByte mit der aktuellen Codepage ein, die Ergebnisse unterscheiden sich dann.

Irgendwie sieht es so aus, als würde die Ansibytefolge als Unicode angenommen und zur kyrillischen Codepage konvertiert.
1. Загрузить (04170430043304400443043704380442044C)
2. Çàãðóçèòü (C7E0E3F0F3E7E8F2FC)
3. Caa?oceou (4361613F6F63656F75)

Für das Wort wäre 2. die richtige Bytefolge, als Latin 1 kommen die schönen Diakritika raus, ein russischer Rechner zeigt es richtig an. Nr. 3 wäre halt das Ergebnis, wenn man noch einmal konvertiert.

Eigentlich sollte sich die Komponente das UTF8 aus der DFM holen, in einen Widestring dekodieren und an einen Ansistring übergeben, wobei die Konvertierung entsprechend den Systemeinstellungen automatisch erfolgt. Da dürfte nicht viel passieren können.

Kann es sein, dass schon das falsche UTF8 gespeichert wird? Richtig wäre:
ЗагруЕить (D097D0B0D0B3D180D183D0B7D0B8D182D18C)
Çà ãðóçèòü (C387C3A0C3A3C3B0C3B3C3A7C3A8C3B2C3BC) sollte es nicht sein
  Mit Zitat antworten Zitat