byte) ([]byte, error) { I := bytes.NewReader(s) O := transform.NewReader(I, simplifiedchinese.GBK.NewDecoder
window下文件一般为GBK格式文件,而Linux系统下文件一般为UTF8文件,当文件读取格式不匹配时,读取到的数据显示为乱码,所以需要转码. GBK格式文件读取 QFile file("GBK.txt"); file.open(QFile::ReadOnly | QFile::Text); QTextCodec *codec = QTextCodec file"<<content; UTF8格式文件读取 QFile file("UTF8.txt"); file.open(QFile::ReadOnly | QFile::Text); QTextCodec *codec = QTextCodec::codecForName("UTF8"); QString content = codec->toUnicode(file.readAll()); qDebug "); file.open(QFile::ReadOnly | QFile::Text); QTextCodec *codec = QTextCodec::codecForName("UTF8
2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…
思路 找出目录下的所有文件类型 遍历要转码的文件类型,如.php 利用vim的set fileencoding=utf8进行转码 具体实现 设置~/.vimrc set fileencodings=utf -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u 转码的脚本 gbk_to_utf8.sh #! /bin/bash for i in `find -name \*.php` do vim -s gbk_utf8.vi $i done gbk_utf8.vi :set fileencoding =utf8 :wq! /gbk_to_utf8.sh 欢迎查看我的网站原文
我们这里将以最简单最容易理解的方式来描述GBK和UTF8的区别,以及它们分别是什么。 GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中文字符,另外还有一种字符“gb2312”,这种字符仅能存储简体中文字符。 GBK和UTF8有什么区别? UTF8编码格式很强大,支持所有国家的语言,正是因为它的强大,才会导致它占用的空间大小要比GBK大,对于网站打开速度而言,也是有一定影响的。 GBK编码格式,它的功能少,仅限于中文字符,当然它所占用的空间大小会随着它的功能而减少,打开网页的速度比较快。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。
val_before == $val) { // no replacements were made, so exit the loop $found = false; } } } return $val; } GBK 转UTF8 function GBKtoUTF8($str) { if(is_array($str)) { foreach ($str as &$value) { $value = GBKtoUTF8( is_string($str)){ $str = iconv("GB18030", "UTF-8//IGNORE", $str); return $str; }else{ return $str; } } UTF8 转GBK function UTF8toGBK(&$str) { if(is_array($str)) { foreach ($str as &$value) { $value = UTF8toGBK(
中文 转换文件名由GBK为UTF8 sudo apt-get install convmv convmv -r -f cp936 -t utf8 --notest --nosmart * 批量转换 src目录下的所有文件内容由GBK到UTF8 find src -type d -exec mkdir -p utf8/{} /; find src -type f -exec iconv -f GBK -t UTF-8 {} -o utf8/{} /; mv utf8/* src rm -fr utf8 转换文件内容由GBK到UTF8 iconv -f gbk -t utf8 $i > newfile
"; String result = ""; System.out.println(shang); try { result = URLEncoder.encode(shang, "GBK "); System.out.println("GBK:" + result); result = URLEncoder.encode(shang, "UTF-8"); System.out.println("UTF8: " + result); result = URLEncoder.encode(shang, "UTF-16"); System.out.println result); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } 输出: 殇 GBK :%E9%E4 UTF8: %E6%AE%87 UTF16:%FE%FF%6B%87 ?
GBK与UTF-8就是两种常用的编码方式。其中,utf-8编码一个字母用一个字节表示,一个汉字用三个字节表示,gbk编码一个字母用一个字节表示,一个汉字用两个字节表示。
[TOC] 0x00 基础介绍 中文字符标准编码: GBK,GB2312,GB18030 产生原因: 空间占用 因为UTF-8是Unicode的一种实现,所以他包含了世界上的所有文字的编码,但是他采用的是 后来厂商微软利用GB2312-80未使用的编码空间,收录GB 13000.1-93全部字符制定了GBK编码。 常用的中文编码有GBK(常用),GB2312,GB18030: GB2312(1980年):16位字符集,收录有6763个简体汉字,682个符号,共7445个字符; 优点:适用于简体中文环境,属于中国国家标准 国际标准 ;所有字符都可以一对一映射到unicode2.0上; 缺点:不属于官方标准,和big5之间需要转换;很多搜索引擎都不能很好地支持GBK汉字。 ) { //中文字符GBK码表 System.out.println('中' + 0); //gbk码表一一对应 System.out.println('文' + 0);
具体来说,定义的是下列字节: 范围 第1字节 第2字节 编码数 字数 水准GBK/1 A1–A9 A1–FE 846 717 水准GBK/2 B0–F7 A1–FE 6,768 6,763 水准GBK/ 3 81–A0 40–FE (7F除外) 6,080 6,080 水准GBK/4 AA–FE 40–A0 (7F除外) 8,160 8,160 水准GBK/5 A8–A9 40–A0 (7F除外) 192 长度也是一个字节,前 0~127 与 ASCII 一致,剩下的128个字符大多是欧洲语言所使用的字符,所以可以认为ISO 8859-1是为欧洲语言所定制的一套编码标准。 2.3 GBK 事实上我们使用的GBK、GB18030都是标准,但由于我们的标准只对应一套特定的字符集,所以可以认为GBK就是字符集。 from wiki: 部分0号平面的分布: 3.2 字符码与字符编码解耦 强映射的问题 传统编码中,字符码与字符编码是完全绑定的,例如在ASCII中,'a’的字符码是97,'a’的字符编码也是97。
使用如下代码得到汉字“年”的unicdoe 编码和UTF8编码: package test; import java.io.UnsupportedEncodingException; import getBytes("UTF-8")); xmlUTF8 = URLEncoder.encode(xmString, "UTF-8"); System.out.println("UTF8 改成utf8后,再用hex eidtor打开就能观察到期望的编码如下: ?
UNICODE,GBK,UTF-8 UNICODE,GBK,UTF-8 简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的 ,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设uncode为a040,gbk为b030,而uft-8码,就是把那个值表现的形式.utf-8码完全只针对uncode 对于任何字符编码,编码单元的顺序是由编码方案指定的,与endian无关。例如GBK的编码单元是字节,用两个字节表示一个汉字。这两个字节的顺序是固定的,不受CPU字节序的影响。 而Unicode只与ASCII兼容(更准确地说,是与ISO-8859-1兼容),与GB码不兼容。例如“汉”字的Unicode编码是6C49,而GB码是BABA。 从Unicode2.0开始,Unicode项目采用了与ISO 10646-1相同的字库和字码。 目前两个项目仍都存在,并独立地公布各自的标准。
今天尝鲜装完Intellij IDEA以后,打开一个GBK编码的页面,华丽丽的乱码了。尼玛,准备用这个工具革命的,第一步就跪了。 问题分析 Intellij IDEA默认创建的项目编码是utf-8,这就造成一个问题:项目创建的所有文件,以及在这个项目下打开的所有文件,都被UTF8编码给搞了。 整个项目设置编码 1、打开项目设置(File->Settings) 2、点击,激活下拉菜单,选择GBK(找不到的话在more里头找找) 至此,完!
本文告诉大家如何在 .NET Core 中使用 GBK 编码 默认的 .NET Core 框架不包含 GBK 编码,不包含除了代码页为 28591 和 Unicode(utf-8,utf-16) 之外的其他编码 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 这个代码是做注册,可以在启动的时候调用 获取 GBK 可以使用下面方法 // 注册GBK编码 Encoding encodingGbk = Encoding.GetEncoding("GBK"); C# 判断文件编码 dotnet core 使用 GBK 编码 VisualStudio 编码规范工具 2.6 修改当前文件编码 win10 uwp 读取文本GBK错误
ASCII: 英文字母与数字编号的一一对应。每个英文字母对应一个编号。范围0~127 Unicode: 全世界所有语言中字符与数字编号的一一对应。也即为存在的每个字符指定一个唯一的编号。 ASCII与Unicode就是将字符与数字一一对应起来的映射。比如对于字符'A',在计算机看来,它就是一个数字65。 当字符串被写入文件时,也是将字符串中每个字符对应的数字编号保存在文件。 由此也可看出,当待保存文本为纯英文字母时, 采用Unicode的存储效率太低了 UTF8便是为了解决Unicode存储效率低下而产生的。具体的规则就不讲了,先来看一下UTF8能够达到的效果。 对于相同的文本:'abcd',Unicode需要12个字节,而UTF8只需要4个字节(和ASCII一样,达到最优)。 UTF8之所以可以用一个字节存储英文字母,是因此它使用了变长的编码方式。 Unicode存在存储效率低下的问题,UTF8是在这个方面对Unicode的优化。
UTF8变长编码可以解决。有的文字是1个字节存储的,有的文字是2个字节存储的,还有3个字节存储的,还有4个字节存储的。 最后集合起来就是一共有一到四字节四种变长的编码。 还有一点要说明,就是一个UTF8格式的文件,它要表明它的身份,以让人用UTF8的读法来读它。 可能我们仔细的看一下这个文件的内容,看一下字节出现个格式,和我们上面所说的是否一样,也就知道它是不是UTF8编码了。 不过还有一种保险一点的方法,就是在文件的最开头加上三个字节的信息,这三个字节比较少见,所以一见到它们三个开头,我们就知道是UTF8格式的文件了,使用这种方式可以让我们快速判断出来文件是不是UTF8格式的 ,有助于提高性能,不过这不是必须的,我们没有这三个字节也可以判断文件的格式是不是UTF8编码方式。
常见的如utf8, utf16, utf32 比如,对于英文字符A , 在unicode中的值是65, 其在计算机中存储时, 使用utf8 utf16 utf32等不同格式存储时, 是完全不同的。 utf8存储,在内存中就是0x41; utf16存储,在内存中就是0x0041 ; utf32存储,在内存中就是0x00000041 在windows编程中, 字符格式通常有多字节(ansic)与宽字符 Unicode编码与UTF-8的编码的对应关系: Unicode编码 UTF-8编码(二进制) U+0000 – U+007F 0xxxxxxx U+0080 – U+07FF 110xxxxx 10xxxxxx 基本多语言平面(码位范围U+0000-U+FFFF) 在基本多语言平面内的码位UTF-16编码使用1个码元且其值与Unicode是相等的(不需要转换)。 具体的转换过程为 1 首先将unicode码表 - 0x10000 , 这样得到的辅助平面的码表范围为(U+0000 - U+FFFFF) ,总共最多20bit 2 将20bit ,分为high 10bit 与
代码如下: text = open('西游记.txt').read() 但是在执行的时候一直报错: UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 2: illegal multibyte sequence 分析可能是由于小说里的内容不是标准的gbk的内容导致的。
而我之所以就这个问题专门写一篇文章,原因是前两天在与公司一位有十几年工作经验的JAVA程序员对接 API时, 我问他返回的汉字是什么编码的, 而他回答说"直接返回unicode”. .encode('gbk') '\xc4\xe3\xba\xc3' >>> u'你好'.encode('utf8').decode('gbk') u'\u6d63\u72b2\u30bd' >>> print u'你好'.encode('utf8').decode('gbk') 浣犲ソ 如上面的代码所示, “你好"两个汉字字符的unicode分别为4f60和597d, utf-8编码后占6个字节, 而gbk 如果用utf8编码后错误地用gbk来解码, 就会得到3个unicode码点,分别表示字符浣,犲和ソ;而如果用gbk编码后 错误地用utf8来解码, 则在解码第二个字符时无法凑够3个字节, 因此会得到未知的结果 的utf8编码 的叠加, 因此如果平时遇到多个utf8编码的Unicode占位符且不巧用了gbk的方式解码,那就会看到熟悉的锟斤铐了.
应用与服务编排工作流(ASW)是对腾讯云服务进行可视化编排,组合成工作流模板的应用程序集成类产品。ASW 简化开发和运行业务流程所需要的任务协调、状态管理以及错误处理等繁琐工作,更简单、直观、快速地构建和更新应用。
扫码关注腾讯云开发者
领取腾讯云代金券