【问题标题】:Russian character dispaly as '?' in installer俄语字符显示为“?”在安装程序中
【发布时间】:2018-01-04 14:07:00
【问题描述】:

我使用 NSIS 创建了我的英语、法语和俄语桌面应用程序。法语和英语都可以正常工作,但在选择俄语时会显示“?”而不是一些字符。 例如:原始字符串是 Äîáðî ïîæàëîâàòü â ìàñòåð íàñòðîéêè

它在运行时显示为:

我已经在我的 LanguageText.nsh 文件中添加了 !define MUI_LANGDLL_ALLLANGUAGES。 我正在使用俄语的 Windows 10 64Bit 虚拟机进行测试安装程序。

更新

我在我的主文件中添加了 Unicode true,并使用记事本将所有文件 (.ini/.nsh) 转换为 UTF-8 作为您的建议。 现在安装程序上的 Header 工作正常,其他字符仍然是 '?????'

此外,当我在记事本中打开我的 language.nsh 文件时,所有字符都正确显示。但是当我在 HM NIS 中打开它时,它会发生变化。

EX:记事本文件内容: LangString WMWelCome ${LANG_RUSSIAN} "Мастер установки поможет Вам установить $(^NameDA).\nIf на Ваш компьютер,если Вы хотите обновить программу,пожалуйста создайте резервное копирование программы, данных и баз данных.\nIt Перед началом установки закройте все другие приложения .\n\nЧто бы открыть Installation Guide нажмите на ссылку внизу.\n\nIf для получение помощи, пожалуйста свяжитесь с нами at\nhelp@windowmaker.com или посетите нашу страницу в интернете WebSite.\n\n$_CLICK"

当我在 HM NIS 中打开同一个文件时: 内容更改为: LangString WMWelCome ${LANG_RUSSIAN} "МаÑÑ,ер уÑÑ,ановки по¡¼Ð¾¡¶ÐµÑ, Ð'ам уÑÑ,ановиÑ,ÑŒ $(^NameDA).\n如果 на Ð 'аш компьюÑ,ер,ÐμÑли Ð'Ñ‹ хоÑ,иÑ,е обновиÑ,ÑŒ программу,пож °Ð»ÑƒÐ¹ÑÑ,а ÑоздайÑ,е резервноѵ копирование прн¡¾¡³Ñ€Ð°Ð¼Ð¼Ñ‹, даннÑÑÑ ‹Ñ... и баз данныÑ....\nIt Перед началом уÑÑ,ановки закройÑ,е вÑе другие приложениÑ.​​\n\nЧÑ,о бы оÑ,крыÑ,ÑŒ 安装指南 нажмР¸Ñ‚е на ÑÑылку вни¡ уйÑÑ,а ÑвÑжиÑ,еÑÑŒ Ñ Ð½Ð°Ð¼Ð¸ at\nhelp@windowmaker.com †Ñƒ в интернете 网站。\n\n$_CLICK"

【问题讨论】:

  • 您的 NSI 文件使用哪种编码?而且,顺便说一句,你的原始字符串已经是无效的俄语(一定是Добро пожаловать в мастер настройки),这是故意的吗?
  • NSIS 版本?如果是 v3,您是在创建 Unicode 还是 Ansi 安装程序?
  • 考虑切换到 Unicode。或者 Windows-1251,如果你的编辑器允许的话。
  • NSIS 版本 3.02.1,我正在创建 ANSI 安装程序。
  • @Dev 要在 ANSI 中编辑这种类型的文本,您可能需要将 system-level language for non-Unicode programs 更改为俄语。如果这不起作用,您可能需要指定您使用的文本编辑器。

标签: installation nsis


【解决方案1】:

NSIS v2

NSIS v2 不以任何方式翻译字符串,所有字符串都作为原始字节从源文件中复制。

要正确构建多语言安装程序,您应该将俄语字符串放入名为 MyRussian.nsh 的文件中,并使用可以保存在 Windows 1251 代码页中的编辑器对其进行编辑。


NSIS v3

NSIS v3 在编译器内部将字符串转换为 Unicode。在 v3 中构建多语言安装程序时,我建议您将 .nsi 和 .nsh 文件保存为带有 BOM/SIG 的 UTF-8。我还建议您生成一个 Unicode 安装程序,您可以通过在脚本中添加 Unicode True 来实现。

您还可以在使用!include 时使用/charset 选项强制使用特定的编码,但在任何地方都使用UTF-8 不会那么痛苦。


当您使用 MUI_LANGDLL_ALLLANGUAGES 时,您是在告诉 NSIS 您不想隐藏在特定机器上可能无法正确显示的语言。只有“俄罗斯机器”才能正确显示 ANSI 安装程序。 Unicode 安装程序适用于每台机器(显然运行 Windows 95/98/ME 的机器除外)。

【讨论】:

  • 对不起.. 但是如何使用 BOM/SIG 以 UTF-8 存储文件?使用记事本您只能将其保存为 UTF-8..
  • 记事本确实使用 BOM 保存,但出于某种原因它只是将其称为 UTF-8。 “Unicode”(UTF-16 LE BOM)也可以。
  • 我已将所有 .nsh/.ini 文件转换为 UTF-8。还在主文件中定义 Unicode true。现在我的安装程序的标题显示完美,但其他字符显示为'?????'
  • 如果您正在编译 UTF-8 或 UTF-16 文件,则不能使用 HM Nis Edit。你可以试试这个编辑器:forums.winamp.com/showthread.php?t=425807
  • 如果你使用Visual Studio你可以使用这个工具:forums.winamp.com/showthread.php?t=342898并直接在VS中编辑所有文件。
猜你喜欢
  • 2017-07-15
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 2012-06-28
  • 2012-04-27
相关资源
最近更新 更多