Символы UTF-8 не отображаются правильно в Inno Setup - PullRequest
0 голосов
/ 27 июня 2018

Я видел несколько других тем об этом, но я потратил некоторое время, пытаясь отсортировать его безрезультатно.

Вот общая версия моего файла .iss:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define AppName "MyApp"
#define CompanyName "MyCompany"
#define FileName "File Name"
#define AppExeName "App Exe.exe"
#define AppIcon "..\icon.ico"
#define AppId "app.id"
#define AppURL "mywebsite"
#define AppSrcDir "path\to\app\directory"
#define AppTargetDir "{userappdata}\" + CompanyName + "\" + AppName
#define AppVersion GetFileVersion(AppSrcDir + "\" + AppExeName)
#define AppPublisher "Publisher"
#define LaunchMessage "Launch Message"
#define AppProtocol "protocol"
#define OutputDir "path\to\output"
#define SetupFilename FileName + "-setup-" + AppVersion
#define SetupImage "..\setup.bmp"
#define InstallerMessage "Some message with a German character - ö"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)

AllowCancelDuringInstall=no
AppId={#AppId}
AppName={#AppName}
AppVersion={#AppVersion}
AppVerName={#AppName} {#AppVersion}
AppPublisher={#AppPublisher}
AppPublisherURL={#AppURL}
AppSupportURL={#AppURL}
AppUpdatesURL={#AppURL}
DefaultDirName={#AppTargetDir}
DefaultGroupName={#CompanyName}
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableReadyPage=yes
DisableReadyMemo=yes
OutputDir={#OutputDir}
OutputBaseFilename={#SetupFilename}
PrivilegesRequired=lowest
SetupIconFile={#AppIcon}
SignTool=signtool
Compression=lzma/ultra64
SolidCompression=yes
WizardSmallImageFile={#SetupImage}
UninstallDisplayIcon={app}\{#AppExeName}

[InstallDelete]
Type: filesandordirs; Name: {#AppTargetDir}

[Languages]
Name: de; MessagesFile: "compiler:Languages\German.isl"

[Files]
Source: "{#AppSrcDir}\*"; DestDir: "{app}"; Flags: recursesubdirs
Source: "path\to\other\installers\win32\*"; DestDir: "{app}\redist";
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#AppName}"; Filename: "{app}\{#AppExeName}"; WorkingDir: "{app}";
Name: "{commondesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; WorkingDir: "{app}";

[Run]
FileName: "{app}\redist\installer.exe"; Parameters: "/S /v/qn"; WorkingDir: "{app}"; StatusMsg: "{#InstallerMessage}";

У меня проблема в том, что он не отображает текст InstallerMessage правильно. Символ ö отображается неправильно.

Я использую версию Inno Setup для Unicode (с "(u)").

Я видел некоторые упоминания об использовании метки порядка байтов, но я не видел примеров. Я попытался преобразовать всю строку, используя кодировщик UTF-8, и добавил метку порядка байтов в начале, но это не сработало. Я полностью в тупике!

1 Ответ

0 голосов
/ 27 июня 2018

Убедитесь, что ваш файл .iss использует кодировку UTF-8 с спецификацией . И, конечно же, вам нужна версия Inno Setup для Unicode (единственная версия Inno Setup 6).


Была ли строка также использована в коде Pascal Script (что не так, упоминая ее просто для пользы других, которые могут найти этот вопрос), вы также должны использовать Inno Setup 5.6.0 или новее , Более ранние версии не поддерживали UTF-8 в Pascal Script.

Изменения в Pascal Scripting:
Unicode Inno Setup: Unicode теперь поддерживается для входного источника. Например, если раньше вам приходилось писать S := #$0100 + #$0101 + 'Aa';, теперь вы можете написать S := 'ĀāAa'; напрямую. Также см. Новый пример сценария UnicodeExample1.iss .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...