Deno 在 Windows 上中文乱码的问题解决
前言
通过我在不同平台的使用和真实测试,我非常推荐你使用 Linux 和 Mac 来搞;
如果你是 Windows 机器,推荐使用 Git Bash
或者 微软新出的 Windows Terminal
这里的核心就是 “win10 中 cmd,power shell 设置默认编码为 UTF-8(解决 win10 命令行中文乱码)”
读取本地文件乱码
deno run --allow-read https://deno.land/std/examples/cat.ts E:\deno\axihe.com.md
再试试英文的,发现英文状态可以的;
最开始遇到这个问题,我是有点懵逼。
根据我的经验,这是因为 powershell 和 cmd 的解析问题,不是 Deno 的锅,事实证明就是这样;如果你是使用 Git Bash
或者 微软新出的 Windows Terminal
就不会存在这个问题。
我们来设置一下 powershell 格式
修改 powershell/cmd 格式
临时修改
直接在 powershell 中执行 chcp 命令
chcp 65001
运行试试,发现可以运行,这只是当前窗口好用。
cmd 的设置
注意:这个方法我网上找到的,但是测试没有生效,留个 TODO,以后填坑
如果想每次打开 cmd 时让电脑自动输入这串代码,可以下面这么做:
- win+R
regedit
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
鼠标右键
- 添加一个字符串值 (名称为:autorun
数据为:chcp 65001
)
chcp 命令使用的数字编码表
代码页 | 国家(地区)或语言 |
---|---|
437 | 美国 |
708 | 阿拉伯文 (ASMO 708) |
720 | 阿拉伯文 (DOS) |
850 | 多语言(拉丁文 I) |
852 | 中欧 (DOS) - 斯拉夫语(拉丁文 II) |
855 | 西里尔文(俄语) |
857 | 土耳其语 |
860 | 葡萄牙语 |
861 | 冰岛语 |
862 | 希伯来文 (DOS) |
863 | 加拿大 - 法语 |
865 | 日耳曼语 |
866 | 俄语 - 西里尔文 (DOS) |
869 | 现代希腊语 |
874 | 泰文 (Windows) |
932 | 日文 (Shift-JIS) |
936 | 中国 - 简体中文 (GB2312) |
949 | 韩文 |
950 | 繁体中文 (Big5) |
1200 | Unicode |
1201 | Unicode (Big-Endian) |
1250 | 中欧 (Windows) |
1251 | 西里尔文 (Windows) |
1252 | 西欧 (Windows) |
1253 | 希腊文 (Windows) |
1254 | 土耳其文 (Windows) |
1255 | 希伯来文 (Windows) |
1256 | 阿拉伯文 (Windows) |
1257 | 波罗的海文 (Windows) |
1258 | 越南文 (Windows) |
20866 | 西里尔文 (KOI8-R) |
21866 | 西里尔文 (KOI8-U) |
28592 | 中欧 (ISO) |
28593 | 拉丁文 3 (ISO) |
28594 | 波罗的海文 (ISO) |
28595 | 西里尔文 (ISO) |
28596 | 阿拉伯文 (ISO) |
28597 | 希腊文 (ISO) |
28598 | 希伯来文 (ISO-Visual) |
38598 | 希伯来文 (ISO-Logical) |
50000 | 用户定义的 |
50001 | 自动选择 |
50220 | 日文 (JIS) |
50221 | 日文 (JIS- 允许一个字节的片假名) |
50222 | 日文 (JIS- 允许一个字节的片假名 - SO/SI) |
50225 | 韩文 (ISO) |
50932 | 日文(自动选择) |
50949 | 韩文(自动选择) |
51932 | 日文 (EUC) |
51949 | 韩文 (EUC) |
52936 | 简体中文 (HZ) |
65000 | Unicode (UTF-7) |
65001 | Unicode (UTF-8) |
永久修改
-
找到 powershell Profile,可以在 powershell 环境中输入 $Profile 就可以得到 Profile 文件的路径
- 我的机器是
C:\Users\Administrator\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
- 我的机器是
-
但是我发现
PROFILE
默认文件不存在,需要创建:New-Item $PROFILE -ItemType File -Force
- 此时会在文档目录下产生一个 ps1 文件,该文件会在 Powershell 启动的时候加载。
- 其次,在该配置文件中添加如下内容:
[System.Console]::OutputEncoding=[System.Text.Encoding]::GetEncoding(65001)
- 在管理员模式下运行 powershell, 执行该命令命令:
Set-ExecutionPolicy Unrestricted
-
新打开一个 powershell 会话,测试一下中文是否异常,成功啦!