阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      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
      

      https://a.axihe.com/edu/deno/powershell_u53NMmH2mT.png

      再试试英文的,发现英文状态可以的;

      https://a.axihe.com/edu/deno/powershell_Y0jWfO7VwS.png

      最开始遇到这个问题,我是有点懵逼。

      根据我的经验,这是因为 powershell 和 cmd 的解析问题,不是 Deno 的锅,事实证明就是这样;如果你是使用 Git Bash 或者 微软新出的 Windows Terminal 就不会存在这个问题。

      我们来设置一下 powershell 格式

      修改 powershell/cmd 格式

      临时修改

      直接在 powershell 中执行 chcp 命令

      chcp 65001
      

      运行试试,发现可以运行,这只是当前窗口好用。

      https://a.axihe.com/edu/deno/powershell_BM0BJHJHlF.png

      cmd 的设置

      注意:这个方法我网上找到的,但是测试没有生效,留个 TODO,以后填坑

      如果想每次打开 cmd 时让电脑自动输入这串代码,可以下面这么做:

      1. win+R
      2. regedit
      3. 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
      4. 鼠标右键- 添加一个字符串值 (名称为:autorun 数据为:chcp 65001

      https://a.axihe.com/edu/deno/regedit_QrESZ0D8nB.png

      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)
      1200Unicode
      1201Unicode (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)
      65000Unicode (UTF-7)
      65001Unicode (UTF-8)

      永久修改

      • 找到 powershell Profile,可以在 powershell 环境中输入 $Profile 就可以得到 Profile 文件的路径
        • 我的机器是C:\Users\Administrator\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 https://a.axihe.com/edu/deno/powershell_QH0sq0ZLBq.png
      • 但是我发现 PROFILE 默认文件不存在,需要创建:

        New-Item $PROFILE -ItemType File -Force
        

      https://a.axihe.com/edu/deno/powershell_hGM0qiBY15.png https://a.axihe.com/edu/deno/explorer_D5JbfBk5Nv.png

      • 此时会在文档目录下产生一个 ps1 文件,该文件会在 Powershell 启动的时候加载。
      • 其次,在该配置文件中添加如下内容:[System.Console]::OutputEncoding=[System.Text.Encoding]::GetEncoding(65001)
      • 在管理员模式下运行 powershell, 执行该命令命令:Set-ExecutionPolicy Unrestricted

      https://a.axihe.com/edu/deno/powershell_CNDP7Mhwy8.png

      • 新打开一个 powershell 会话,测试一下中文是否异常,成功啦!

      https://a.axihe.com/edu/deno/powershell_gQ2yajesja.png

      卖前端学习教程

      只需几十元,就能买到培训班的内部教程!开启高薪之路!

      零基础小白阿里P7的教程都有!

      同时长期收购所有培训班的前端教程

      目录
      目录