使用 NSIS 安装程序在 ini 文件中写入俄语符号

问题描述

我有几个 UTF8-BOM ini 文件并使用 Unicode nsis 安装程序。

使用 WriteINIStr 可以很好地处理拉丁符号,但不显示俄语符号。

例如此代码不起作用:

WriteINIStr $File "TestSection" "Test" "Тест"

我有一些关于将文件编码为 UTF16 和向后编码的想法,但我认为那不是正确的路径。

解决方法

如果 .ini 具有 UTF-16LE BOM,Windows ini 函数将使用 UTF-16 编码写入文件。

FileOpen $0 $INSTDIR\file.ini a
FileWriteUTF16LE /BOM $0 ""
FileClose $0
WriteIniStr $INSTDIR\file.ini foo bar "${U+2115}SIS"

只要访问此文件的其他程序也使用标准的 Windows ini 功能,这将起作用。如果其他程序使用需要 UTF-8 的自定义解析器函数,那么这将不起作用,您必须convert 文件编码。