Encoding InstallShield希望非拉丁字母字符串表项使用什么编码?

Encoding InstallShield希望非拉丁字母字符串表项使用什么编码?,encoding,localization,installshield,Encoding,Localization,Installshield,我使用的应用程序通过一个包含多个本地化的安装程序进行分发。构建过程包括一个脚本,该脚本使用每种受支持语言的翻译更新.ism字符串表 这适用于法语和德语等语言。但是当用日语测试安装程序时,文本显示为一系列方块。这不太可能是字体问题,因为InstallShield提供的字符串显示良好;只有字符串表条目被损坏。所以问题似乎是字符串的编码错误 ism是XML格式,UTF-8声明为其编码,因此我假设字符串也需要UTF-8编码。他们真的需要使用目标平台的编码吗?那么,是否有人担心目标具有不同的编码,即使用一

我使用的应用程序通过一个包含多个本地化的安装程序进行分发。构建过程包括一个脚本,该脚本使用每种受支持语言的翻译更新.ism字符串表

这适用于法语和德语等语言。但是当用日语测试安装程序时,文本显示为一系列方块。这不太可能是字体问题,因为InstallShield提供的字符串显示良好;只有字符串表条目被损坏。所以问题似乎是字符串的编码错误

ism是XML格式,UTF-8声明为其编码,因此我假设字符串也需要UTF-8编码。他们真的需要使用目标平台的编码吗?那么,是否有人担心目标具有不同的编码,即使用一种GB编码的中国系统与使用另一种GB编码的中国系统?在这里应该做什么


编辑:使用InstallShield 2009,因为这与2010年明显不同。

在InstallShield 2009和更早版本中,编码是特定于所讨论语言的ANSI编码中二进制字符串的base-64编码(例如,日语为CP932)。在InstallShield 2010及更高版本中,它仍将接受UTF-8或使用UTF-8,具体取决于该表中的其他列。

在InstallShield 2009及更早版本中,编码是特定于所述语言的ANSI编码中二进制字符串的base-64编码(例如,日语为CP932)。在InstallShield 2010及更高版本中,它仍将接受该选项或使用UTF-8,具体取决于该表中的其他列。

我也在尝试解决这个问题

我已经内置了一些Installshield 12(2009年之前)项目,其中的字符串表条目包含base64“目标”字符范围之外的字符

例如,其中一个日语字符串是:
4P!H
和$
9
!O
“我也在努力解决这个问题

我已经内置了一些Installshield 12(2009年之前)项目,其中的字符串表条目包含base64“目标”字符范围之外的字符

例如,其中一个日语字符串是: 4P!H
和$
9
!O
“谢谢(投票支持他的答案)去找迈克尔·厄尔曼,他为我们指明了正确的方向。但这是实际的工作(使用InstallShield 2009)算法,由同事反向设计:

  • 从unicode(多字节字符)字符串开始
  • 将长度写入ism文件中的编码长度字段
  • 将字符串编码为UTF-16-little-endian
  • Base-64使用uuencode字典,除了用`(倒勾)代替空格
  • 将结果写入ism文件,转义XML实体
  • 请注意,使用uuencode字典的base-64ing与使用uuencode算法不同。标准uuencode生成一组换行符分隔行,包括页眉、页脚和一个或多个数据行,每个数据行都以长度字符开头。如果您使用uuencode编解码器实现此功能,则需要将其全部删除。

    谢谢(投票支持他的答案)转到Michael Urman,为我们指明了正确的方向。但这是实际的工作(使用InstallShield 2009)算法,由同事反向设计:

  • 从unicode(多字节字符)字符串开始
  • 将长度写入ism文件中的编码长度字段
  • 将字符串编码为UTF-16-little-endian
  • Base-64使用uuencode字典,除了用`(倒勾)代替空格
  • 将结果写入ism文件,转义XML实体

  • 请注意,使用uuencode字典的base-64ing与使用uuencode算法不同。标准uuencode生成一组换行符分隔行,包括页眉、页脚和一个或多个数据行,每个数据行都以长度字符开头。如果您使用uuencode编解码器实现此功能,则需要将所有这些功能去掉。

    是否设置了其他列?特别是我认为编码列获得了un-base-64编码文本的长度。您设置了其他列了吗?特别是,我认为编码列获得了un-base-64编码文本的长度。有关更多信息,请参阅。这不是你想的标准base64。谢谢你的指点。哇,真是一团糟。我突然意识到我一定是搞错了,因为我确信我继承这些项目的那个人并没有通过编写自己的应用程序来进行转换。。。通常如何输入非拉丁语文本?真的没有办法从Word文档复制/粘贴吗?翻译人员通常是如何完成这项工作的?我认为通常您可以使用GUI或IS的VBScript自动化界面来导出每种语言的字符串表。这将生成一个utf-8或utf-16编码的文件(忘记哪个)。你把它交给翻译人员,他们用文本编辑器填写,然后用相同的编码保存。然后再次导入该文件。我们的构建系统有点复杂,所以这不是一个选项;我们需要直接处理ism文件。我将ISString表导出为文件'ISString.idt',但它具有相同的奇怪编码。把它装进奥卡不会改变什么。我想知道人们通常用什么来编辑这些东西。我想我只需要全力以赴,编写一个命令行应用程序来实现您描述的算法。我将使其开源,并在完成后在此发布链接。有关更多信息,请参阅。这不是你想的标准base64。谢谢你的指点。哇,真是一团糟。我突然意识到我一定是搞错了,因为我确信我继承这些项目的那个人并没有通过编写自己的应用程序来完成这个任务