Android studio在terminal中git出现中文乱码问题(Windows)

1,382 阅读3分钟

AndroidStudio编译项目时Run窗口中文乱码

image.png

  • 打开菜单:Help--Edit Custom VM Options
  • 打开studio64.exe.vmoptions编辑框(如果没有该文件,请按照提示自动创建即可)
  • 在studio64.exe.vmoptions中添加 -Dfile.encoding=UTF-8
  • 重启AndroidStudio就🆗了

image.png

Android studio在terminal中git中文乱码

在git bash上没问题,在Android studio的logcat也不乱码,偏偏在Android studio上乱码,类似这样:

image.png 了解到Android studio中是en_UTF8编码,而在Windows中是C_UTF8的编码格式,这样值需要改变全局编码格式为C_UTF8就行。

所以配置一下系统环境变量就解决了:

image.png

之后重启Android studio(重启Android studio的terminal不管用)

image.png

又可以开心的敲代码辽

附编码规则:

首先我们要知道一个最小单位bit,只能是0或1。其次是一个字节,一个字节也就是8位bit,转换成数字,能表示最大的数字也就是255。想要表示更大的数字,就要把多个字节拼起来,例如两个字节拼成16位的,能表示最大的数字就是1111 1111 1111 1111(对应的十进制是65535),计算机要表示字符,就是由这些数字拼起来对应的,这些对应起来形成了词典,就是编码的规则。

ASCII

计算机是美国人发明的,那时候在计算机上显示的字符只包含了所有大小写字母,数字,和一些常用符号,总计有127个字符。这样的话字符只要用一个字节表示就够了。比如65对应A,z对应122。这个对应关系,便被称为 ASCII 编码。

GB2312等等

后来,随着计算机的普及,世界各国的人都开始使用计算机了。各国开始搞自己语言的编码了。因为新的字符实在太多了,而一个字节显然不够,因此各国语言有了许多新的编码格式,比如中国的 GB2312GBK ,就是用至少两个字节来表示一个字符。类似的,日本人有自己的 Shift_JIS 编码,韩国人有 Euc-kr 。这时的编码就很乱。

Unicode

因为类似 GB2312 一样的各种编码互相冲突,所以又出现了一种新的编码方式 Unicode ,来将所有的编码统一处理,这样不管你用什么国家的语言,只要用我 Unicode ,那都可以显示出来。在 Unicode 编码中,一个字符通常由两个字节组成(除非一些非常偏僻的字符会多一点)。

UTF-8

虽然 Unicode 很通用,但是有一些冗余的情况。为什么呢?比如一个大写字母A,他之前在 ASCII 下对应65,二进制也就是0100 0001,在 Unicode 编码中,只要在前面补一个0字节即可,即他对应为0000 0000 0100 0001。这样问题来了,之前 ASCII 定义的这些字符在 Unicode 中,都在前面白白加了8个0,这样在传输时多浪费空间啊。所以,由 Unicode 演化出一种新的编码, UTF-8 。在 UTF-8 中,不同的字符对应的字节数也不同。常见的英文字母等 ASCII “元老”,只用一个字节表示。而像中文字符这样的,一般用三个字节表示。

now

现在,因为 Unicode 编码占用空间多,所以在传输或存储时都使用了 UTF-8 编码,而在计算机内存中使用时,则使用着 Unicode 编码。比如我们在写代码的时候,在IDE中写入文件的代码,都是用 UTF-8 编码格式保存起来的。在编译运行时,这些字符被读取到内存中,此时用的编码格式则是 Unicode 。

乱码对照表:

173bc2cbb25668a26975cacd33c8f43.jpg