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

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

Аватара для K.A.V.

Ленивый кусок мяса


Contributor


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

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


Цитата 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

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:14, 22-07-2015 | #1701