Unicode



  • Hallo zusammen

    ich habe ein Problem und hoffe ihr könnt mir helfen.
    Ich möchte einen Text in der russischer Sprache aus einer .txt auslesen.
    Ich habe mir ein kleines Testprogramm geschrieben das eine Zeile einlesen und diese dann als neuen Buttontext an der Oberfläche anzeigen soll.
    Die ersten beiden Zeichen die ich einlese sind 255 und 254. Dies bedeutet doch UTF-16/UCS-2 Big endian oder? Die anderen Zeichen sehen im Debugger wie folgt aus Byte[2] - Byte [5]. Als neuer Text erscheinen Kästchen und Zahlen, es sollten aber diese Zeichen angezeigt werden "об". Könnt ihr mir helfen?

    buffer	0x001ecd44 "ÿþ>1"	wchar_t[128]
    		[0]	255 'ÿ'	wchar_t
    		[1]	254 'þ'	wchar_t
    		[2]	62 '>'	wchar_t
    		[3]	4 ''	wchar_t
    		[4]	49 '1'	wchar_t
    		[5]	4 ''	wchar_t
    		[6]	0 ''	wchar_t
    		[7]	0 ''	wchar_t
    
    fp = _wfopen(sPath, L"r");
    
    	if(fp)
    	{
    		while( !feof(fp))		// while not end of file		
    		{ 
    			fgetws( buffer, sizeof(buffer)-1, fp);		// read line, if error
    			_tcscpy_s(pElementsBuffer->ButtonText[0], sizeof(pElementsBuffer->ButtonText[0]), buffer );
    		}
    	}
    

    Gruß Rick



  • Hallo

    Wenn du einen Builder hast, der korrekte Unicode-Komponenten hast, dann sollte das ganze mit TStringList doch viel einfacher gehen. Und wenn du einen Builder ohne Unicode-Komponenten hast, dann kannst du sowieso kein Unicode darstellen, ohne eine externe Library zusätzlich zu integrieren. Und dann sollten auch wieder Methoden zum direkten Laden von Unicodedateien dabei seien.

    bis bald
    akari



  • Danke für deine schnelle Antwort.
    Ich benutze VS2008 und erstelle gerade ein Projekt für WinCE.



  • Rick0035 schrieb:

    Danke für deine schnelle Antwort.
    Ich benutze VS2008 und erstelle gerade ein Projekt für WinCE.

    Dann hast du das falsche Unterforum gewählt. Visual Studio hat nichts mit der VCL und dem C++ Builder zu tun. "MFC (Visual C++)" wäre wohl das richtige Unterforum.



  • Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • 255 und 254 sollte eigentlich Little-Endian sein http://de.wikipedia.org/wiki/Byte_Order_Mark (typisch für Windows).
    Wenn du deine MFC-App als UNICODE komplierst, dann ist CString Unicode 16-bit.
    Deine Textdatei ist auch Unicode 16-bit. Du musst also beim Einlesen nicht konvertieren.
    In deinem Dialog (Resource Editor) muss auch eine Schrift eingestellt sein, die russische Zeichen darstellen kann. Verwende dort "MS Shell Dlg", Windows nimmt dann auf dem Zielsystem die optimale Schrift. Ich mache nichts mit WinCE, aber auf dem Desktop ist es so.


Anmelden zum Antworten