Цитата Dodakaedr:
Теперь осталось эту кодировку оформить в скрипте. Вы не знаете как это сделать? »
|
Что сделать то? Поменять кодировку файла или записать корректно строку в файл с не ANSI кодировкой?
Если поменять кодировку файла - не знаю (и гуглить особо не ок с мобильного инета, поэтому как-нибудь сами), я вообще по теме кодировок "не бум бум"
Судя по запросу гугла на сайте NSIS есть какой-то плаг "Unicode", у меня в архиве на жд его нет (опять же, потому что темой кодировок не интересовался), поэтому не могу сказать, что это за плаг и какие в нём есть функции - возможно в нём как раз есть полезные функции
Поиском в гугле по-быстрому наткнулся на
код от kotkovets, в нём есть макрос преобразования ANSI строки в UTF8, что позволяет писать корректно в файл с кодировкой UTF8 (насчет других - не в курсе)
Код:
!include "StrFunc.nsh"
${StrRep}
!define ANSIToUTF8 "!insertmacro ANSIToUTF8"
!macro ANSIToUTF8 SOURCE_STRING OUTPUT_STRING
Push `${SOURCE_STRING}`
System::Store SR2
System::Call "kernel32::MultiByteToWideChar(i0,i0,tR2,i-1,i0,i0)i.R1"
IntOp $R1 $R1 * 2
System::Alloc $R1
Pop $R0
System::Call "kernel32::MultiByteToWideChar(i0,i0,tR2,i-1,iR0,iR1)"
System::Call "kernel32::WideCharToMultiByte(i65001,i0,iR0,i-1,t.s,iR1,i0,i0)"
System::Free $R0
System::Store L
Pop `${OUTPUT_STRING}`
!macroend
OutFile "test.exe"
Section
${StrRep} $0 "$EXEDIR\acity_temp" "\" "\\"
${ANSIToUTF8} "$0" "$0"
WriteINIStr "$EXEDIR\TEST.ini" "Directories" "TempDir" "$0"
quit
SectionEnd