Aciano Posted April 20, 2007 Share Posted April 20, 2007 (edited) Hi all. I am reading an XML that is in utf-8 (XML it self shows OK in the browser), but when I read it with INetGet all of the Czech characters are wrong. This time I Copy and Paste the whole XML from the IE, which I don't like. Can anyone help me and tell me how to convert those "broken letters" (change utf-8 to Windows-1250)? I have been searching and experimenting for couple of days before writting you and I haven't found anything but ANSCII characters. If anyone could help, I will appreciate it. I understand that utf-8 document saves in utf-8 besides Windows-1250 (for exaple) saves in ANSI. I appreciate any help. Aciano Edited April 20, 2007 by Aciano Link to comment Share on other sites More sharing options...
Zedna Posted April 20, 2007 Share Posted April 20, 2007 Grabbed from forum:http://www.autoitscript.com/forum/index.php?showtopic=21815expandcollapse popupFunc Asc2Unicode($AscString) Local $BufferSize = StringLen($AscString) * 2 Local $Buffer = DllStructCreate("byte[" & $BufferSize & "]") Local $Return = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _ "int", 0, _ "int", 0, _ "str", $AscString, _ "int", StringLen($AscString), _ "ptr", DllStructGetPtr($Buffer), _ "int", $BufferSize) Local $UnicodeString = StringLeft(DllStructGetData($Buffer, 1), $Return[0] * 2) $Buffer = 0 Return $UnicodeString EndFunc Func Unicode2Asc($UniString) If Not IsBinaryString($UniString) Then SetError(1) Return $UniString EndIf Local $BufferLen = StringLen($UniString) Local $Input = DllStructCreate("byte[" & $BufferLen & "]") Local $Output = DllStructCreate("char[" & $BufferLen & "]") DllStructSetData($Input, 1, $UniString) Local $Return = DllCall("kernel32.dll", "int", "WideCharToMultiByte", _ "int", 0, _ "int", 0, _ "ptr", DllStructGetPtr($Input), _ "int", $BufferLen / 2, _ "ptr", DllStructGetPtr($Output), _ "int", $BufferLen, _ "int", 0, _ "int", 0) Local $AscString = DllStructGetData($Output, 1) $Output = 0 $Input = 0 Return $AscString EndFunc Func Unicode2Utf8($UniString) If Not IsBinaryString($UniString) Then SetError(1) Return $UniString EndIf Local $UniStringLen = StringLen($UniString) Local $BufferLen = $UniStringLen * 2 Local $Input = DllStructCreate("byte[" & $BufferLen & "]") Local $Output = DllStructCreate("char[" & $BufferLen & "]") DllStructSetData($Input, 1, $UniString) Local $Return = DllCall("kernel32.dll", "int", "WideCharToMultiByte", _ "int", 65001, _ "int", 0, _ "ptr", DllStructGetPtr($Input), _ "int", $UniStringLen / 2, _ "ptr", DllStructGetPtr($Output), _ "int", $BufferLen, _ "int", 0, _ "int", 0) Local $Utf8String = DllStructGetData($Output, 1) $Output = 0 $Input = 0 Return $Utf8String EndFunc Func Utf82Unicode($Utf8String) Local $BufferSize = StringLen($Utf8String) * 2 Local $Buffer = DllStructCreate("byte[" & $BufferSize & "]") Local $Return = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _ "int", 65001, _ "int", 0, _ "str", $Utf8String, _ "int", StringLen($Utf8String), _ "ptr", DllStructGetPtr($Buffer), _ "int", $BufferSize) Local $UnicodeString = StringLeft(DllStructGetData($Buffer, 1), $Return[0] * 2) $Buffer = 0 Return $UnicodeString EndFunc Resources UDF ResourcesEx UDF AutoIt Forum Search Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now