为什么设了UTF-8, 保存的ini文件,中文内容还是乱码?


#1

package neeme

import org.ini4j.Config
import org.ini4j.Ini
import java.io.*
import java.nio.charset.Charset

class IniFile(fileName: String, pathName: String = “”) {

private var file = File(fileName)
private val ini = Ini()
private val cfg = Config()

init {
    if (pathName != "") {
        file = File(pathName)
        file.mkdirs()
        file = File(pathName + File.separator + fileName)
    }
    if (!file.exists())
        file.createNewFile()

    cfg.fileEncoding = Charset.forName("UTF-8")
    ini.config = cfg
    ini.load(file)
}

fun store() = ini.store(file)

fun <T : Any> read(section: String, option: String, default: T): T =
    ini.get(section, option, default.javaClass) ?: default

fun <T : Any> write(section: String, option: String, value: T): String = ini.put(section, option, value) ?: ""

}


#2

[PUB]
name = \u987a\u5fb7 + +
age = 2
a = \u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fdabcd-123

中文部份而然不正确显示!!!


#3

\u4e2d 这就是正确的 Unicode 码点,不能叫乱码。不用担心,你可以设置你的 ide 的显示,但这个不会影响结果


#4

编码是正确,但如果用文本编缉器打开这就不好看。
我以前用 Qt 做程序生成的ini文件,用编缉器打开也是中文。


#5

编码是正确,但如果用文本编缉器打开这就不好看。
我以前用 Qt 做程序生成的ini文件,用编缉器打开也是中文。

aaa


#6

所以你是用什么打开的?


#7

程序运行是正确的,调试查看变量值也是正常的中文。但生成的.ini 文件,如果用系统的gedit打开
中文部分就是这些\u5e7f\u4e1c\u987a\u5fb7。 我觉得应该显是中文才理想。


#8


#9

Linux 内置的那个编辑器?

你去设置你的编辑器吧。Unicode 字符本质上就是你现在看到的样子,所有显示中文的情况其实都是别人替你做了转换。


京ICP备16022265号-2 Kotlin China 2017 - 2018