×

linux的utf8转码gbk

linux下C语言转uUTF-8为gbk只能转两个字何其?Linux和Windows转码结果不一样

admin admin 发表于2022-07-02 00:20:05 浏览84 评论0

抢沙发发表评论

linux下C语言转uUTF-8为gbk只能转两个字何其


不知道你是不是在代码里面自己转换,或者你的目的是什么?
但是,汉字转码,不是增加编译选项 -finput-charset=UTF-8 -fexec-charset=UTF-8 就可以了吗? 前一个是代码编辑的时候的编码格式,后一个是执行时显示的编码格式。

通常编辑的时候格式设置为ANSI,一般编译后可以直接显示。

Linux和Windows转码结果不一样


Linux中默认文件名编码为UTF8,由于编码不一致的原因,所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码。
介绍一个Linux的小工具:convmv。
它可以帮助你完成文件名编码的转换,将文件名从GBK转换成UTF-8编码,也能从UTF-8转换到GBK。
首先看一下你的系统上是否安装了convmv,假如没安装的话用:yum-yinstallconvmv安装。
下面看一下convmv的详细用法:convmv-f源编码-t新编码[选项]文件名常用参数:-r递归处理子文件夹notest真正执行转码,请注意在默认情况下文件名不是真正转码,而只是试验。list显示所有支持的编码unescap可以做一下转义,好比把20%变为成空格。

linux中文文件名乱码怎么解决


Linux文件名、文件内容乱码,主要原因是windows上的中文编码默认是GBK,而Linux默认中文编码为UTF-8,由于编码不一致,所以导致乱码问题。
为了解决这个乱码,需要对文件进行转码,具体如下:

1、前提保证已安装了convmv;
2、具体convmv的用法:
Convmv –f 源编码 –t 新编码 [选项] 文件名
一般常用参数:
-r 递归处理子目录
--notest 真正进行操作,默认情况下是不对文件进行真实操作的,只是一个预览
--list 显示所有支持的编码
--unescap 可以做一个转义
3、比如我们有一个utf8的文件名,要求转换成gbk编码,命令如下:
Convmv –f utf-8 –t gbk –notest 文件名

也可以使用linux下最好用的编码转换工具iconv来进行转码操作。

例子:将GBK编码的文件转换成UTF-8
iconv -f GBK -t UTF-8 gbkfile.txt 》 utf8file.txt
-linux的utf8转码gbk