читать персидский текстовый файл с помощью плагина inetc в nsis - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть много текстовых файлов с персидским текстом: "سلام" теперь я хочу прочитать текстовый файл и напрямую записать в переменную

Я использую из примера плагина inetc это:

Unicode true

Section

;test_Unicode_BE_BOM.txt:
inetc::get /NOCANCEL /TOSTACK /SILENT "http://update.nodmarket.com/Persian_Text_Files/test_Unicode_BE_BOM.txt" /END
Pop $R0
Pop $R1
MessageBox MB_OK "$R1"


;test_Utf8_BOM.txt
inetc::get /NOCANCEL /TOSTACK /SILENT "http://update.nodmarket.com/Persian_Text_Files/test_Utf8_BOM.txt" /END
Pop $R0
Pop $R1
MessageBox MB_OK "$R1"


;test_Unicode_LE_BOM.txt
inetc::get /NOCANCEL /TOSTACK /SILENT "http://update.nodmarket.com/Persian_Text_Files/test_Unicode_LE_BOM.txt" /END
Pop $R0
Pop $R1
MessageBox MB_OK "$R1"

SectionEnd

но после шоу я вижу этот текст в окне сообщения:

enter image description here

плагин inetc и исходная страница: в чем проблема?почему я вижу неработающий персидский текст после чтения из плагина inetc?когда я использую код

Unicode true

Section
MessageBox MB_OK|MB_RIGHT|MB_RTLREADING "سلام"
SectionEnd

Я вижу "سلام" в окне сообщений успешно, но я думаю, что плагин inetc Руины персидских слов!

1 Ответ

0 голосов
/ 25 сентября 2018

INetC на самом деле не поддерживает преобразование Unicode на лету.

Если вам нужен полный контроль, вы должны загрузить файл во временный каталог, а затем прочитать его с инструкциями файла NSIS.

InitPluginsDir
inetc::get /NOCANCEL /SILENT "http://update.nodmarket.com/Persian_Text_Files/test_Unicode_LE_BOM.txt" "$PluginsDir\test.txt" /END
Pop $0
${If} $0 == "OK"
    FileOpen $1 "$PluginsDir\test.txt" r
    FileReadUTF16LE $1 $2
    FileClose $1
    MessageBox mb_ok $2
${EndIf}

Я загрузил новую версию INetC в вики для вас с ограниченной поддержкой UTF-8 и UTF-16LE (требуется спецификация).

inetc::get /NOCANCEL /TOSTACKCONV /SILENT "http://update.nodmarket.com/Persian_Text_Files/test_Utf8_BOM.txt" /END ; v1.0.5.3+ required for /TOSTACKCONV to support BOM detection.
Pop $R0
Pop $R1
MessageBox MB_OK "$R0:$R1"

Помещение текста Unicode в файл .nsi работает, потому чтоКомпилятор NSIS поддерживает Unicode, но текст, возвращаемый плагином, имеет обработку текста внутри плагина и может не поддерживать Unicode.

...