如何获取操作系统的默认编码?

3

如何获取默认的操作系统编码?对于Linux系统,可以在此处找到:/etc/sysconfig/i18n

如果您认为从该文件中读取是最好的方法,那么我能否相信它将适用于所有现代主流Linux发行版?那Windows系统呢?

2个回答

0

没有真正的默认编码。 这可能因终端、应用程序或其他任何事物而异。


仅以一个例子来说明,ext3文件名可以是任何二进制序列,除了0x00(我相信)。这完全取决于应用程序来解释该序列,例如gnome默认使用UTF-8。但您甚至可以在文件名中使用响铃或退格键。 - Evert
我对默认的操作系统编码感兴趣。http://docs.fedoraproject.org/zh-CN/Fedora/12/html/Deployment_Guide/ch-sysconfig.html#s2-sysconfig-i18n - alex347
好的,也许我应该重新表述一下。默认编码是指什么?字符串?文件名?控制台?LANG=环境变量将作为某些与编码相关的API的设置,但你不能真正称之为“操作系统的默认编码”。再次强调:请解释您的最终目的...您只是想显示此统计信息,还是正在尝试做其他事情? - Evert
我正在Linux上使用nroff。我需要知道在PHP中保存文件时应该使用哪种编码。如果文件没有保存在默认编码中,它会给我这个错误:XXX XXX 警告:旧的字符编码和/或字符集 XXX - alex347
2
终于!细节!这些细节在你的问题中会非常有用。我不知道nroff如何工作,但如果它从环境中获取信息,那么很可能是LC_CTYPE环境变量...但再次强调,这是进程特定的,而不是整个操作系统的绑定。 - Evert
显示剩余2条评论

0
检测编码的最佳方法是从你正在尝试读取的文本片段开始。 使用mb_detect_encoding()函数[这里是文档]
$str = "....."; //use you own logic to get the text
echo mb_detect_encoding($str);

在 @Evert 的基础上添加

编码发生在字符显示在屏幕或CLI界面上时。它不依赖于操作系统,而是与内容相关。


我需要以默认的操作系统编码保存文件,这样我就可以确保其他操作系统应用程序可以正确读取该文件。在我的情况下,它是在Linux下的nroff。 - alex347
每当操作系统通过应用程序打开文件时,应用程序负责根据文件的编码显示输出。操作系统不指定任何编码。 - Starx
Linux在这里指定了默认编码:http://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-sysconfig-i18n.html - alex347

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接