我处理的应用程序通过包含多个本地化的单个安装程序进行分发。构建过程包括一个脚本,该脚本使用每种支持语言的翻译更新.ism字符串表。
这适用于法语和德语等语言。但是当测试安装程序,即日语时,文本显示为一系列正方形。它不太可能是字体问题,因为InstallShield提供的字符串显示正常;只有字符串表条目被破坏。所以问题似乎是字符串编码错误。
.ism是XML格式,UTF-8被声明为其编码,所以我假设字符串也需要UTF-8编码。他们真的需要使用目标平台的编码吗?那么,对于具有不同编码的目标,即使用一个GB编码而不是另一个编码的中文系统,是否有任何问题?在这里做什么是正确的?
编辑:使用InstallShield 2009,因为它与2010年之间显然存在差异。
答案 0 :(得分:2)
在InstallShield 2009及更早版本中,编码是特定于所讨论语言的ANSI编码中的二进制字符串的base-64编码(例如,日语的CP932)。在InstallShield 2010及更高版本中,它仍然会接受或使用UTF-8,具体取决于该表中的其他列。
答案 1 :(得分:1)
我也想弄明白......
我已经在一些Installshield 12(2009年之前)项目中使用了字符串表条目,其中包含的字符超出了base64'target'字符的范围。
例如,日语字符串之一是:
!4Pħ&$
9 !O
'< 4
环R &\
= !E
&安培;!,=``@
$(80!C
&安培,L =0!P
“00!G`&4`;@!T`)(PI##S,+DPR##\,.LP5S!^,%DP`C
经过多次搜索后,我发现Base85 encoding,看起来更接近合理,但尚未证实这是解决方案。
答案 2 :(得分:1)
谢谢(通过他的回答)去Michael Urman,指出我们正确的方向。但这是实际工作(使用InstallShield 2009)算法,由同事反向设计:
请注意,使用uuencode字典的base-64ing与使用uuencode算法不同。标准uuencode生成一组换行符分隔行,包括页眉,页脚和一个或多个数据行,每个数据行以长度字符开头。如果您使用uuencode编解码器实现此功能,则需要将所有内容删除。