准确的说应该是整个系统默认 utf-8 了,但是我只测试了 powershell,不知道其他程序会不会出问题
终于可以看不见烦人的乱码了
感觉 Windows 确实一步步在向开发方向做优化

1
Nitroethane 2018 年 5 月 2 日 via Android
这不算默认吧,还得自己手动启用
|
2
hljjhb 2018 年 5 月 2 日 via Android
痛点!
|
3
orangeade 2018 年 5 月 2 日
还带 BOM 吧
|
4
LosLord OP @Nitroethane "终于可以默认了",以前改起来很烦的
|
5
12101111 2018 年 5 月 2 日 via Android
这是哪个 build 有的功能
|
8
kikyous 2018 年 5 月 2 日 via Android
微软还算发奋图强,只有苹果要死不活的
|
9
Arnie97 2018 年 5 月 2 日 via Android
Unicode 也好,BOM 也好,明明都是我巨硬先实现的,但是,为什么,会变成这样呢…
|
11
dexterzzz 2018 年 5 月 2 日
去翻看 unicode 标准,标准组织专门来为了反微软而反.
|
12
iwtbauh 2018 年 5 月 2 日 @Arnie97
UTF-8 是 1992 年发明的,但 Windows 从 NT 3.1 也就是 1993 年才转为使用 UTF-16 ( UCS-2 ) Unicode 只是字符映射方案,UTF-8,UTF-16,UTF-32 都是 Unicode 的实现 所以什么时候成了 MS 先实现 Unicode 的了? 参考: http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt |
13
iwtbauh 2018 年 5 月 2 日
总算有点进步,但什么使用 Windows 的系统 API 能原生支持 UTF-8 了这个系统才能让人舒服点编程,Win APi 只能使用 ANSI 字符编码( XxxxA )或者 UTF-16 编码( XxxxW )
|
14
kamen 2018 年 5 月 2 日 windows 都快默认 utf-8 了,美国还在使用英制单位
|
15
PHPer233 2018 年 5 月 2 日 via iPhone
直接存储 Unicode 码值多好,2 个字节就可以搞定,非要用 UTF-8 的 3 个字节。
|
16
iwtbauh 2018 年 5 月 2 日
@PHPer233 首先两个字节的是 UTF-16 不是 Unicode,而且英文字母 UTF-8 一个字节,UTF-16 是两个字节。另外 UTF-16 还像 CPU 一样有字节序的区别
|
18
goreliu 2018 年 5 月 2 日
在 powershell 里输入中文显示有问题,其他的还好,在 WSL 里运行有中文输出的命令终于不用转编码了。
|
20
k9982874 2018 年 5 月 2 日 via iPhone
cmder 了解一下
|
21
ZenFX 2018 年 5 月 2 日
改了之后我的 IDM 界面上的文字就变成乱码了
|
22
avichen 2018 年 5 月 2 日
用 powershell 6.0.1
|
23
geelaw 2018 年 5 月 2 日
|
24
iwtbauh 2018 年 5 月 2 日 via Android
@geelaw UTF-8 兼容 ASCII,UTF-16 不兼容 ASCII。UTF-8 没有字节序区别,UTF-16 有字节序的区别。UCS-2 在需要时还是需要扩展到大于 2 字节
|
26
abcbuzhiming 2018 年 5 月 2 日
@geelaw 因为体积,计算机世界里最多的字符串仍然是字母和数字,这些 UTF-8 只需要 1 个字节,而 UTF-16 需要两个,体积膨胀呢
|
28
LosLord OP |
29
iwtbauh 2018 年 5 月 2 日 via Android
@LosLord 现在版本的 vs 确实好很多了,旧版本 MSVC 对于 UTF-8 字符编码的源码文件支持太糟糕了。
但是就算源代码文件是 UTF-8,如果我没记错,MSVC 可能还是会把字符编译前转换成 ANSI (中文系统上就是 GBK 系),这就很难受。 |
30
LosLord OP |
31
geelaw 2018 年 5 月 2 日 @abcbuzhiming #26 不要活在自己的世界里——请问你有真实世界里字符串的统计吗?注意,并不是所有的字母都在 ASCII 范围内,比如希腊字母、希伯来字母和阿拉伯字母,此外,即使是拉丁字母也不全都能用 ASCII 表示;同样,数字除了 0123456789 还有其他的。
@iwtbauh 但是对于 #13 里的问题,似乎也不需要兼容 ASCII 吧——毕竟你的函数名字变了。 此外,几乎定长的性质很重要,否则切字符串、数字符个数都是很麻烦的事情。 @LosLord #28 大多数软件应该选择 internally 使用 UCS-2 (和 Win32 API 交互的时候),并在保存文件的时候明确指定编码,而不是依赖默认编码;所有这样正确设计的软件都不会受 locale 的影响。如果写程序的人假定用户会选择 UTF-8 作为默认代码页(更糟糕的是忘记测试 UTF-8 不是默认代码页的情况)且依赖默认代码页去获得 UTF-8 编码,他们可能会被 surprised ——因为这个世界上大多数人都是使用 non-UTF-8 作为默认代码页的。这个设置是用来兼容那些古早味软件的,which 使用 VerbNounA 系列 API。 |
33
goreliu 2018 年 5 月 2 日
看起来这个改动影响比较广泛,比如记事本的 ANSI 也变成 UTF-8 了,还有 .js/.vbs/.ahk 等代码文件的默认编码,可能会产生一些兼容性问题。
|
34
binbinyouliiii 2018 年 5 月 2 日
@goreliu #33 抛弃记事本,使用 notepad++,从你我做起。整个系统编码的变化,影响肯定会不小,谁让微软留下了个中文系统使用 GBK 这个烂摊子呢。
|
35
goreliu 2018 年 5 月 2 日
@binbinyouliiii 我自己倒不用记事本,但这样改后,gbk 的文件用记事本打开就变成乱码了,所以还是会产生一些直观的影响。
|
36
qq316107934 2018 年 5 月 2 日 via Android
@iwtbauh 这个工作量可太大了,等下一次内核重构?可是记得微软说过 win10 是最后一个版本的 windows 系统,也不知道微软怎么想。
|
37
Arnie97 2018 年 5 月 2 日 via Android
@qq316107934 因为变成滚动更新发行版了,滑稽
|
39
kokutou 2018 年 5 月 2 日
win7 的 bat 不支持 utf-8 怎么办。。。
强行所有 bat 全部转 powershell 么。。。 |
41
geelaw 2018 年 5 月 2 日
@kokutou #39 Batch 必须是 OEM 代码页编码的,要获取 OEM 代码页,你可以
Get-ItemPropertyValue HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage OEMCP |
42
Narcissu5 2018 年 5 月 2 日
好像当时使用 GBK 是政府强制的,还好这么多年 GBK 总算凉了
|
45
Zzde 2018 年 5 月 2 日 via iPhone
cmd 字体舍什么 默认吗
|
46
goreliu 2018 年 5 月 2 日
改为后,若干中文界面的小软件乱码了,比较麻烦,不过基本不是太常用的软件。
|
48
Remember 2018 年 5 月 3 日
cmd 的默认字体可以改了么?
|
49
abc612008 2018 年 5 月 3 日 via Android
勾上之后电脑就不能开机了……
|
50
LosLord OP |
51
ershiwo 2018 年 5 月 3 日
老 gal 在 utf-8 下肯定是没戏正常运行的了(
不过还没试 locale emulator 能不能让它们正常跑起来。所以说普通人还真不一定能注意到这个改动。 |
52
BOYPT 2018 年 5 月 3 日
嗯 改了之后 xshell 乱码了,用英文界面吧。
|
53
goreliu 2018 年 5 月 3 日
|
55
goreliu 2018 年 5 月 3 日
|
56
goreliu 2018 年 5 月 3 日
接楼上。文件用 UTF-8 编码,调用 MessageBoxA 函数。
#include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBoxA(0, "Hello 测试 ヘッドセット 한국어", "测试", MB_ICONINFORMATION); return 0; } https://i.loli.net/2018/05/03/5aea7def1e93c.png 以前的话,因为韩语不在 GBK 里,必须用 MessageBoxW 才能正常显示。 |
60
MeteorCat 2018 年 5 月 3 日
有没有人和我一样打开文件仅仅修改几个文件,编译程序的时候全部都是要求把编码给换了....................
|
61
rzti483NAJ66l669 2018 年 5 月 3 日
开启后 KeePass 出错。
|
62
UnknownR 2018 年 5 月 3 日
常年英文版飘过。。。刚刚还遇到了编码问题,powershell 默认 out-file 不支持 utf-16 也是蛮蛋疼的,中文系统传过来的文件还要删除 utf-16 的 FF 和 FE 头才能正常映射
|
64
redapple02041 2018 年 5 月 5 日
字体那么好看了吗
|
65
LosLord OP @redapple02041 我改成黑体了,4K 屏幕,锯齿也会小很多
|