Kaeru Gaman hat geschrieben:also, wenn du das rausgefunden hast, würdest du dann bitte ein Topic im FAQ verfassen?
Jo WENN, da ich aber anscheinend auf absoluten Kriegsfuss mit WinAPI stehe wird das wohl nix werden...
[OT]btw brauchen wird's wahrscheinlich jeder der in ein paar Jahren kommerzielle Software für den asiatischen (oder war's nur China) Markt schreiben will, ist bei denen per Gesetz für neue Programme (atm nur Betriebssystenme) Vorraussetzung das die GB18030 interpretieren 'können'.[/OT]
Ich glaube zwar theoretisch zu wissen, mit welchem WinAPI-Befehl man nen Unicode String in nen "BG18030"-String konvertiert aber iwie will's nit hinhauen, wie gesagt WinAPI versteh ich anscheinend echt #NULL von und die msdn ist nicht wirklich ne große Hilfe...
Hab's atm so weit:
Code: Alles auswählen
Enumeration
#Window
#File
#Library
#String_0
#Font
EndEnumeration
LoadFont (#Font, "SimSun", 40)
If ReadFile(#File, "test.data")
text.s = ReadString(#File, #PB_Unicode)
CloseFile(#File)
EndIf
temp.s = Space(Len(text))
lpWideCharStr = @text
cchWideChar = Len(text)
lpMultiByteStr = @temp
cchMultiByte = Len(temp)
CodePage = 54936 ; CofePage of GB18030
dwFlags = 0 ; Otherwise, the function fails with ERROR_INVALID_FLAGS
; OpenLibrary(#Library, "c_g18030.dll")
; Debug CallFunction(#Library, "UnicodeToBytes", lpWideCharStr, cchWideChar, lpMultiByteStr, cchMultiByte)
WideCharToMultiByte_(CodePage, dwFlags, lpWideCharStr + 1, cchWideChar, lpMultiByteStr + 1, cchMultiByte, 0 ,0)
If OpenWindow(#Window, 100, 200, 620, 80, "Font Test")
If CreateGadgetList(WindowID(0))
StringGadget(#String_0, 10, 10, 600, 60, "")
EndIf
SetGadgetFont(#String_0, FontID(#Font))
SetGadgetText(#String_0, temp)
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
quit = 1
EndIf
Until quit = 1
EndIf
End
Referenzen für das ganze hab ich aus der msdn, sollten also richtig sein, die DLL hat (angeblich) jeder WinXP-Nutzer, wenn man die DLL kennt findet man auch den UnicodeToBytes-Befehl allerdings ist dann schon der Satz
msdn hat geschrieben:Do not use this function. When converting Unicode characters to GB18030 bytes, use the WideCharToMultiByte function.
für mich überaus verwirrent, aber gut nimmt man halt WideCharToMultiByte mit der CodePage 54936 für GB18030 aber bekomm trotz allem nur Murks raus "茠茳舷쨹4 ", aber immerhin isses scho Murks den google frisst...
Also bleibt wohl die Frage was ich bei der Benutzung der WinAPI falsch mache...
[EDIT]
Anscheinend mag phpBB keine URL-Tags mit aspx deshalb hier nochmal:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx UnicodeToBytes-Befehl
http://msdn.microsoft.com/en-us/library ... 85%29.aspx WideCharToMultiByte
http://msdn.microsoft.com/en-us/library ... 85%29.aspx CodePage
[/EDIT]