Aciano Posted April 20, 2007 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
Zedna Posted April 20, 2007 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
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