Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
выполняю обещание:
Код: Выделить весь код
Func _Utf8ToAnsi($utf8string)
    Local $len = StringLen($utf8string)
    Local $buf = DllStructCreate("byte[" & $len*2 & "];byte[2]")
    Local $ret = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _
        "int", 65001, "int", 0, _
        "str", $utf8string, "int", -1, _
        "ptr", DllStructGetPtr($buf), "int", $len*2+2)
    Local $out = DllStructCreate("char[" & $len & "];char")
    $ret = DllCall("kernel32.dll", "int", "WideCharToMultiByte", _
        "int", 0, "int", 0, _
        "ptr", DllStructGetPtr($buf), "int", -1, _
        "ptr", DllStructGetPtr($out), "int", $len+1, _
        "int", 0, "int", 0)
    Return DllStructGetData($out,1)
EndFunc
P.S. Кстати, у меня нормально прочитал "просигнатуренный" UTF-8 файл в режиме чтения (Mode 0), а с бинарными режимами (Mode 4, 16) такая же канитель, что и с DllStructGetData()...
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:52, 17-07-2007 | #156