讨厌的微软

不同视角、不同观点、深度探讨,禁止人品和道德攻击
头像
shinery
帖子: 1378
注册时间: 2009-07-22 22:23

讨厌的微软

#1

帖子 shinery »

默认编码GBK或GB2312,害得文档在Linux或Mac下总是乱码,反之亦然。你就不懂UTF-8吗?
愿扣上你双手,至繁华浪处到沙丘。
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: 讨厌的微软

#2

帖子 YeLee »

传统害死人
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
jtshs256
帖子: 22323
注册时间: 2010-07-19 21:41
系统: OS X

Re: 讨厌的微软

#3

帖子 jtshs256 »

不知道,没乱过……
倒是 win 自带的一堆 cygwin 下老乱,不爽……
躺平
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 讨厌的微软

#4

帖子 枫叶饭团 »

这。个还是国家说了算
头像
qy117121
论坛版主
帖子: 50587
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

Re: 讨厌的微软

#5

帖子 qy117121 »

枫叶饭团 写了:这。个还是国家说了算
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

邮箱 [email protected]
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 讨厌的微软

#6

帖子 eexpress »

国家是啥?
● 鸣学
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: 讨厌的微软

#7

帖子 YeLee »

eexpress 写了:国家是啥?
国标 :em04
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
shinery
帖子: 1378
注册时间: 2009-07-22 22:23

Re: 讨厌的微软

#8

帖子 shinery »

国标是应该的,也是合理的,关键不在国标而在于windows。
windows7 里面已经设置了非Unicode编码显示方式为“简体中文”,这说明windows7默认是UTF-8编码方式?但是Ubuntu下的文档不就是UTF-8编码的么,为什么还会乱码呢?
这说明对于编码,windows7 还是有些地方没有考虑周全。
2012-02-12_180548.jpg
愿扣上你双手,至繁华浪处到沙丘。
jtshs256
帖子: 22323
注册时间: 2010-07-19 21:41
系统: OS X

Re: 讨厌的微软

#9

帖子 jtshs256 »

win 的 notepad 用的 UTF-8 带 BOM……
躺平
mraandtux
论坛版主
帖子: 5211
注册时间: 2009-12-12 19:29
系统: Kubuntu

Re: 讨厌的微软

#10

帖子 mraandtux »

建议在Windows用Notepad++,能把GBK转成UTF-8
头像
shinery
帖子: 1378
注册时间: 2009-07-22 22:23

Re: 讨厌的微软

#11

帖子 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会报告源码档开头有无法识别的字符。这个问题往往很难察觉到,可谓是程序代码的隐藏杀手。
愿扣上你双手,至繁华浪处到沙丘。
头像
shinery
帖子: 1378
注册时间: 2009-07-22 22:23

Re: 讨厌的微软

#12

帖子 shinery »

mraandtux 写了:建议在Windows用Notepad++,能把GBK转成UTF-8
已听你建议安装了Notepad++,3X。
愿扣上你双手,至繁华浪处到沙丘。
头像
shinery
帖子: 1378
注册时间: 2009-07-22 22:23

Re: 讨厌的微软

#13

帖子 shinery »

同样讨厌的还有智能拼音、五笔等输入法,明明删掉了,但还是会冷不防跳出来。
愿扣上你双手,至繁华浪处到沙丘。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 讨厌的微软

#14

帖子 eexpress »

安装cygwin吧。。随便安装enca。转码不成问题了。 :em04
● 鸣学
levee
帖子: 3030
注册时间: 2009-10-03 23:31

Re: 讨厌的微软

#15

帖子 levee »

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