Linux打开文本文件乱码处理

您所在的位置:网站首页 Linux打开文本文件 Linux打开文本文件乱码处理

Linux打开文本文件乱码处理

2024-07-12 07:59| 来源: 网络整理| 查看: 265

本笔记记录了从windows拷贝含中文的文本文件到linux中,中文乱码的处理。

原理

windows中的中文默认用GBK,GB2312,GB18030或其他本地编码,而这些编码集默认不能在linux中被识别。

为什么会有中文编码集。字符编码集的发展可以分为三个阶段

ASCII Extended ASCII 字符编码集的国际化

ASCII码使用7bits编码,2^7=128,包括95个可打印字符和33个不可打印字符。很早期计算机使用并不广泛,所以编码128个字符足够。但随着计算机发展,很多功能性符号(加减乘除)和欧洲非英语国家语言中带声调的字符就无法表示了。所以将使用7 bits编码扩展为使用8 bits编码,这就是第一次对ASCII码的扩充,即Extended ASCII。

Extended ASCII编码个数从128 增加到255,包括数学运算符,带音标的欧洲字符,表格符和其他。但像中日韩字符还是无法编码。中文编码集有GB2312,GBK等,但这些都是本地化的编码,如果国外用户想访问中文网站,而客户端未安装相应的编码集,那么国外用户只会看到乱码。

国际化的字符编码集即Unicode,兼容全球的字符集。它定义了世界通用符号集,用UTF-8,UTF-16等实现。一般使用UTF-8编码。

处理方法

第一种方法从源头修改。在windows中编辑中文文本时更改编码格式为UTF-8。

第二种方法当不能从源头更改时,比如拷贝的他人的文件。该情况下从接收端即linux系统中更改文件编码格式。假如有一个从windows拷贝来的中文文本文件original.txt,linux中打开乱码,如

1234567891011121314151617/*Ä£·ÂmnistÊýŸÝŒ¯ÖÆ×÷×ÔŒºµÄÊýŸÝŒ¯ŽúÂë*/ŽúÂëÒ»¹²°üº¬ÈýžöÎÄŒþ image2BinaryData.h image2BinaryData.cpp main.cppÆäÖУºimage2BinaryData.h ºÍ image2BinaryData.cpp ÀïÃ涚ÒåÁËÏà¹ØµÄÀàºÍº¯Êý£¬¿ÉžùŸÝ×ÔŒºµÄÊýŸÝŒ¯×ÔÐÐÐÞžÄʹÓ÷œ·š£º ÔÚMain.hÎÄŒþÖÐÉèÖúÃ×ÔŒºµÄ͌ƬŽóСÒÔŒ°ÏȹصÄÎÄŒþ·Ÿ¶£¬±àÒëÔËÐÐŒŽ¿É¡£ËµÃ÷£º ŽËŽúÂëÖ»ÊʺÏËùÓÐ͌ƬŽóСһÖµĻҶÈÍŒÏñ£¬²»ÊʺϲÊÉ«ÍŒÏñ£¬¿É¶ÔÏàӊλÖÃ×ÔÐÐœøÐÐÐޞġ£ ͌ƬÃüÃû¹æÔò£º0_00001.jpg£º0±íÊŸ¶Ôӊ͌ƬµÄÄÚÈÝ£¬ŒŽ±êÇ©£»00001±íÊŸ±êǩΪ0µÄ͌ƬÖеÚ1ÕÅ͌Ƭ£¬00002ΪµÚ2ÕÅ͌Ƭ£¬ÒÔŽËÀàÍÆ........ ŽËŽúÂëÊʺÏÀà±ðÊýÉÙÓÚµÈÓÚ10µÄÊýŸÝŒ¯£¬Èç¹ûÀà±ðÊý¶àÓÚ10ÖÖ£¬¿É×ÔÐÐÐޞĎúÂëÖÐÏàÓŠ²¿·ÖÔËÐл·Ÿ³£ºwin10 + VS2015 + Opencv3.1.0

首先判断文件具体是用的那种编码

1$ chardet3 original.txt

返回如下,表示有99%的信心认为original.txt是用GB2312编码的。

1original.txt: GB2312 with confidence 0.99

然后用如下命令将编码格式从GB2312变到UTF-8

1$ iconv -f GB2312 -t utf-8 original.txt -o file_utf-8.txt

新的文件file_utf-8.txt会被创建。Linux中打开它

1234567891011121314151617/*模仿mnist数据集制作自己的数据集代码*/代码一共包含三个文件 image2BinaryData.h image2BinaryData.cpp main.cpp其中:image2BinaryData.h 和 image2BinaryData.cpp 里面定义了相关的类和函数,可根据自己的数据集自行修改使用方法: 在Main.h文件中设置好自己的图片大小以及先关的文件路径,编译运行即可。说明: 此代码只适合所有图片大小一致的灰度图像,不适合彩色图像,可对相应位置自行进行修改。 图片命名规则:0_00001.jpg:0表示对应图片的内容,即标签;00001表示标签为0的图片中第1张图片,00002为第2张图片,以此类推........ 此代码适合类别数少于等于10的数据集,如果类别数多于10种,可自行修改代码中相应部分运行环境:win10 + VS2015 + Opencv3.1.0

明白背后原理就有的放矢了,至少知道如何提问从而找到答案。

完成Linux打开文本文件乱码处理



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3