分页: 1 / 2

讨厌的微软

发表于 : 2012-02-12 17:24
shinery
默认编码GBK或GB2312,害得文档在Linux或Mac下总是乱码,反之亦然。你就不懂UTF-8吗?

Re: 讨厌的微软

发表于 : 2012-02-12 17:24
YeLee
传统害死人

Re: 讨厌的微软

发表于 : 2012-02-12 17:28
jtshs256
不知道,没乱过……
倒是 win 自带的一堆 cygwin 下老乱,不爽……

Re: 讨厌的微软

发表于 : 2012-02-12 17:29
枫叶饭团
这。个还是国家说了算

Re: 讨厌的微软

发表于 : 2012-02-12 17:33
qy117121
枫叶饭团 写了:这。个还是国家说了算

Re: 讨厌的微软

发表于 : 2012-02-12 17:51
eexpress
国家是啥?

Re: 讨厌的微软

发表于 : 2012-02-12 17:51
YeLee
eexpress 写了:国家是啥?
国标 :em04

Re: 讨厌的微软

发表于 : 2012-02-12 18:09
shinery
国标是应该的,也是合理的,关键不在国标而在于windows。
windows7 里面已经设置了非Unicode编码显示方式为“简体中文”,这说明windows7默认是UTF-8编码方式?但是Ubuntu下的文档不就是UTF-8编码的么,为什么还会乱码呢?
这说明对于编码,windows7 还是有些地方没有考虑周全。
2012-02-12_180548.jpg

Re: 讨厌的微软

发表于 : 2012-02-12 18:18
jtshs256
win 的 notepad 用的 UTF-8 带 BOM……

Re: 讨厌的微软

发表于 : 2012-02-12 18:34
mraandtux
建议在Windows用Notepad++,能把GBK转成UTF-8

Re: 讨厌的微软

发表于 : 2012-02-12 18:38
shinery
刚看了一篇文章说windows用的是utf16le,非utf16le编码它就会用本地化编码(例如GBK等)替代。
系统都是编译为汇编代码 除了程序内部的文本没法编译成汇编而转换为指定文本编码 你指的是文本编码还有环境编码吧
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-8文档进行修改,MS真无聊啊:
说了这么多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会报告源码档开头有无法识别的字符。这个问题往往很难察觉到,可谓是程序代码的隐藏杀手。

Re: 讨厌的微软

发表于 : 2012-02-12 18:51
shinery
mraandtux 写了:建议在Windows用Notepad++,能把GBK转成UTF-8
已听你建议安装了Notepad++,3X。

Re: 讨厌的微软

发表于 : 2012-02-12 18:53
shinery
同样讨厌的还有智能拼音、五笔等输入法,明明删掉了,但还是会冷不防跳出来。

Re: 讨厌的微软

发表于 : 2012-02-12 18:53
eexpress
安装cygwin吧。。随便安装enca。转码不成问题了。 :em04

Re: 讨厌的微软

发表于 : 2012-02-12 18:58
levee
windows是面向全世界的商业操作系统,专门针对不同国家/地区推出了不同语言的版本,对各个国家/地区的编码标准都给予了最大程度的支持,所以中文用户使用中文版的windows的时候很少会出现乱码,而linux不是商业操作系统,没有微软这样的大公司对他提供资金、技术上的支持,难以做到对各个国家/地区的编码标准都给予支持,为了简单、省事,所以采用了unicode这种统一的编码方案。