linux iconv下用iconv能解usc2 吗?

iconv命令是运行于linux iconv/unix平台的文件编码装換工具当我们在linux iconv/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的这是由于文本文件的编码与当前操作系统设置的编码不同而引起的,这时可以使用iconv进行编码转换从而解决乱码问题。

解决文本文件乱码问题分3步:1.确定文件编码,2.确定iconv是否支持此编码的转换,3.确定linux iconv/Unix操作系统编码,4.转换文件编码为与系统编码一致;下面通过对test.txt文件来举例

1、 使用file命令来确定文件编码:

文件选项:-f 输入编码-t 输出编码-l 列出所有巳知的编码-o 输出文件

加载中请稍候......

以上网友发言只玳表其个人观点,不代表新浪网的观点或立场

在linux iconv下如果需要将编码格式转换,可以使用iconv系列函数

1)outlen和inlen的长度最好相等,iconv会转换所有outlen长度的内容如果inlen长度不够,可能会造成访问越界的问题

2)当ASCII转到GBK时,ASCII字符占┅位中文等的书字符占两位;

1)iconv的结果常常是失败,errno:84表示某些字符无法转换的error。可取出来看outbuf其实内容都已经转换了,此时inlen和outlen的位置都为负数无法表示转换到了哪个字符。

【解决】inleft和outleft一定要用类型size_t 不能用int,否则会报错84并且会将buf后面的内存段也写乱了。切忌

【原因】size_t在64位系统上是8字节,而在32位系统上是4字节int为4字节。这样导致取地址的时候越界

我要回帖

更多关于 linux iconv 的文章

 

随机推荐