欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

正确设置越狱版ios的终端编码--命令行中文的处理

程序员文章站 2022-07-09 21:11:29
本文是针对越狱版iPhone手机的,手机没有越狱就别看了,看了也没办法用。 越狱版的iPhone当然是为了跟电脑一样做各种有趣的事情的。 但通常越狱的iPhone在命令行都无法处理中文,比如你的播放器里面的中文歌曲名,列出来全部是乱码的样子。类似下面的图: 输入中文也做不到,在终端窗口输入中文,只会 ......

正确设置越狱版ios的终端编码--命令行中文的处理
本文是针对越狱版iphone手机的,手机没有越狱就别看了,看了也没办法用。

越狱版的iphone当然是为了跟电脑一样做各种有趣的事情的。
但通常越狱的iphone在命令行都无法处理中文,比如你的播放器里面的中文歌曲名,列出来全部是乱码的样子。类似下面的图:
正确设置越狱版ios的终端编码--命令行中文的处理

输入中文也做不到,在终端窗口输入中文,只会收到一串的警告音,什么也输入不上去或者同样是一串乱码显示。
这样很多强大的命令行工具也不能用了,比如find/grep。

设置命令行的编码方式是无法成功的,默认情况下命令行只支持"c"的编码方式,也就是cp-1252。这种方式只支持ascii字符。
经过一段研究,发现是ios终端默认没有安装编码文件,这也是理所当然,不越狱,标准的ios要编码文件干啥用,gui界面都是使用自己的规则处理编码。
这个编码文件可以直接在macos电脑上拷贝,ios跟macos的编码文件是通用的。通常我是用en_us.utf-8编码,这种编码对中西文的支持都比较完善。
编码文件路径在/usr/share/locale/en_us.utf-8/文件夹,完整拷贝出来。保存到ios上相同的路径。
直接用scp拷贝应当算最方便的:

ssh root@xx.xx.xx.xx     #连接到iphone
mkdir -p /usr/share/locale
cd /usr/share/locale
# 下面的用户名、ip请替换成macos对应的用户名和ip地址
scp -r username@xx.xx.xx.xx:/usr/share/locale/en_us.utf-8 .
echo "export lc_all='en_us.utf-8'" >> ~/.profile

# 下面退出ssh, 重新连接iphone就成功了,这是为了让修改之后的.profile设置生效

此时终端已经能够友好的处理中文了:
正确设置越狱版ios的终端编码--命令行中文的处理