讨厌的微软
- YeLee
- 论坛版主
- 帖子: 26406
- 注册时间: 2008-08-13 8:48
- 系统: Fundu i64
- 来自: 东海硇州,一双管钥。
- 联系:
Re: 讨厌的微软
传统害死人
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
- YeLee
- 论坛版主
- 帖子: 26406
- 注册时间: 2008-08-13 8:48
- 系统: Fundu i64
- 来自: 东海硇州,一双管钥。
- 联系:
Re: 讨厌的微软
国标eexpress 写了:国家是啥?

◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
- shinery
- 帖子: 1378
- 注册时间: 2009-07-22 22:23
Re: 讨厌的微软
刚看了一篇文章说windows用的是utf16le,非utf16le编码它就会用本地化编码(例如GBK等)替代。
又看了一篇文章,它会对UTF-8文档进行修改,MS真无聊啊:系统都是编译为汇编代码 除了程序内部的文本没法编译成汇编而转换为指定文本编码 你指的是文本编码还有环境编码吧
windows的国际化编码默认使用utf16le方案,这也是windows本身的默认locale编码,无法修改为utf8 除非修改windows处理程序内部文本的源代码
windows还有一个编码是本地化locale编码 如果使用非utf16le编码它就会用这套本地化编码去读程序文本信息.
utf16le是为了提高效率,因为这个方案是固定2字节 不像utf8一样1-3可变,而且是倒着排的迎合cpu,据说cpu也是倒着读
但一些本地化的程序没有兼容意识 不使用utf16le编码而使用的是gbk等本地编码,导致拿到其它locale的机器上乱码.这个就没办法了,要想更改只能更改程序内部的文本编码 怎么改我也不清楚.或者用相关的工具启动程序虚拟它的本地locale.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language
"Default"=""
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale
"(Default)"=""
只能修改本地locale不能修改windows默认locale,而且默认的locale是根本没必要修改的,因为默认的locale就是为了实现所有字符在同一套编码下.
这个键值不全 好像还有几个 你可以自己找找我只能帮到这了 最好直接修改注册表 intl面板有bug 从那修改会带来莫名错误
804简体中文,404繁体中文,409英文 其它charset代码你可以自己查
改这个很无聊 也没用 默认编码没必要改 非utf编码你改了也没用,windows的界面程序还依赖二进制mui语言文件,不如装语言包.否则在日文韩文系统下改了本地locale,系统自带工具的界面还是非中文
说了这么多UTF-16的,和UTF-8有什么关系呢?这就要怪无聊的微软了,微软的Windows操作系统中,会给采用UTF-8保存的文件也加上一个BOM,内容是是三字节的EF BB BF。事实上,在UTF-8文件中并不需要BOM。微软这么做主要是为了兼容它之前不支持UTF-8的操作系统(Windows 98之流)。微软的一意孤行给计算机标准造成了许多影响,其他操作系统必须要能准确读取这些奇怪的带有BOM的UTF-8编码的文件,否则就会在文本开头显示出一个奇怪的字符。Windows自从2000开始便一直采用UTF-16LE作为系统内部处理数据的编码。Windows 7的记事本提供了四种编码方式,如右图,从上到下依次为操作系统语言默认编码(ANSI,简体中文系统中就是GBK)、UTF-16LE、UTF-16BE、UTF-8。
带BOM的UTF-8文本文件是程序代码的隐藏杀手
可以看到文本最开头的一个特殊字符
我以前的PHP经验告诉我,不要创建带有BOM的UTF-8文件。PHP中有些函数,例如header(), setcookie()要求在HTTP头没有发送给客户端之前执行。如果UTF-8文件带有BOM,这个BOM就会被最先发给浏览器,从而header就发出去了,这时候再遇到上面的函数便会发生Fatal Error。而在各种类Unix操作系统中这些BOM会影响许多和编程、脚本有关程序的运行,如gcc会报告源码档开头有无法识别的字符。这个问题往往很难察觉到,可谓是程序代码的隐藏杀手。
愿扣上你双手,至繁华浪处到沙丘。