gbk

java unicode转GBK

北城余情 提交于 2019-12-03 19:19:24
我们经常会遇到编码问题。Java号称国际化的语言,是因为它的class文件采用UTF-8,而JVM运行时使用UTF-16(至于为什么JVM中要采用UTF-16,我没看过 相关的资料,但我猜可能是因为JAVA里面一个字符(char)就是16位的,而UTF-16正是双字节编码),都是unicode的编码。 unicode 的目标就是能支持世界上所有的字符集,也就是说几乎所有的字符集包含的字符在unicode中都有对应的编码。在unicode中,字符与代码的映射关 系,就是unicode字符集,称为UCS(Unicode Character Set),每个unicode字符编码称为code point(代码点?)。UTF-8和UTF-16是不同的UCS编码方法,UTF就是UCS Transformation Format。; 在Java 中,String的getBytes()方法就是对特定的字符串(unicode)按照给定的字符集进行编码(encode),new String()则可以按照某个字符集将字节流转换回unicode(decode)。Java里面的每一个String都是unicode编码。 再来看页面,如果不做特殊处理,Form的提交就按照页面的ContentType设置中的字符集进行编码转换,发送到后台,后台必须利用req

编解码遇到的一些现象

人走茶凉 提交于 2019-12-03 13:23:33
utf-8 与 gbk 的编解码问题: 用gbk编码后用utf-8解码,再用逆过程还原后得不到正确得结果(因为gbk编码后再用utf-8解码会造成数据得丢失),这个现象不针对于英文字符,英文字符可以正确得出结果,因为英文字符在各个编码表中是兼容的 public static void main(String[] args) throws UnsupportedEncodingException {/* ProxyClass proxyClass = new ProxyClass(new UserImpl()); User user = (User) Proxy.newProxyInstance(User.class.getClassLoader(),new Class[]{User.class},proxyClass); user.say();*/String name = "赵磊"; /** * GBK编码 * utf-8解码 */ byte[] b = name.getBytes("GBK"); name = new String(b,"UTF-8"); System.out.println(name);//肯定不一致,因为编码与解码方式不同 /** * 用逆过程还原 * 1.用utf-8编码 * 2.用GBK解码 */ b = name.getBytes("UTF-8");

window下的php命令行输出汉字乱码处理

走远了吗. 提交于 2019-12-03 13:23:24
1. 在 php 的代码中加入 header("content-type:text/html;charset=gbk"); 2. 设置命令行的字体 在命令行上右击 属性 字体 选择如下字体 点击 确定 我按照上面的流程基本解决问题,如果还有乱码的话,看看是不是编码不是 gbk 尝试 gb2312 以及其他的一些编码。 来源: https://www.cnblogs.com/ifme/p/11796805.html

字符集和字符编码的区别

拟墨画扇 提交于 2019-12-03 09:19:50
转自: https://www.cnblogs.com/xdyixia/p/9114145.html 1、字符,字符集,字符编码概念 字符: 在计算机和电信技术中,一个字符是一个单位的字形、类字形单位或符号的基本信息。即一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号等。 字符集: 多个字符的集合。例如GB2312是中国国家标准的简体中文字符集,GB2312收录简化汉字(6763个)及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共 7445 个图形字符。 字符编码: 把字符集中的字符编码为(映射)指定集合中的某一对象(例如:比特模式、自然数序列、电脉冲),以便文本在计算机中存储和通过通信网络的传递。 字符集和字符编码的关系 : 字符集是书写系统字母与符号的集合,而字符编码则是将字符映射为一特定的字节或字节序列,是一种规则。通常特定的字符集采用特定的编码方式(即一种字符集对应一种字符编码(例如:ASCII、IOS-8859-1、GB2312、GBK,都是即表示了字符集又表示了对应的字符编码,但Unicode不是,它采用现代的模型)),因此基本上可以将两者视为同义词。 2、发展过程 (1)单字节 ASCII(American Standard Code for Information Interchange)

解决Mac上打开txt文件乱码问题

孤者浪人 提交于 2019-12-03 07:59:32
   出处: https://www.jianshu.com/p/f55ddf1e9839   经常会在Mac上打开一个txt文件,发现里面的中文都是乱码,问题是在Windows和手机上看都完全是正常的,这就十分闹心了。网上千奇百怪的解决方案大多不能用,试错后发现一个解决方案。需要用到命令行工具iconv,语法是这样的: iconv -f encoding -t encoding sourcefile > destinationfile   比如一个典型的例子(也是大多数情况): iconv -f GB18030 -t utf-8 A.txt > B.txt   原文中是GB18030 > UTF8,不知为何会报错,改为utf-8后好用。   看看效果:   完全解决了我们的问题。又有了新的疑惑,why GB18030 > UTF8 ?   补充资料:   兼容性 GB2312:基本满足了汉字的计算机处理需要,对于人名、古汉语等方面出现的罕用字,GB 2312不能处理。 GBK:GBK 向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准。 GB18030 :对GB 2312-1980完全向后兼容,与GBK基本向后兼容,并支持Unicode(GB 13000)的所有码位。    发布时间 GB2312:由中国国家标准总局1980年发布

Python字符编码

家住魔仙堡 提交于 2019-12-03 07:16:16
1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码。计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号。不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础。 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求。后来每个语言就制定了一套自己的编码,由于单字节能表示的字符太少,而且同时也需要与ASCII编码保持兼容,所以这些编码纷纷使用了多字节来表示字符,如 GBxxx、 BIGxxx等等,他们的规则是,如果第一个字节是\x80以下,则仍然表示ASCII字符;而如果是\x80以上,则跟下一个字节一起(共两个字节)表示一个字符,然后跳过下一个字节,继续往下判断。 这里,IBM发明了一个叫Code Page的概念,将这些编码都收入囊中并分配页码,GBK是第936页,也就是 CP936。所以,也可以使用CP936表示GBK。 MBCS(Multi-Byte Character Set)是这些编码的统称。目前为止大家都是用了双字节,所以有时候也叫做 DBCS(Double-Byte Character Set)。必须明确的是,MBCS并不是某一种特定的编码

java字符串的各种编码转换

雨燕双飞 提交于 2019-12-03 05:24:16
import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */ public class ChangeCharset { /** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */ public static final String US_ASCII = "US-ASCII"; /** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */ public static final String ISO_8859_1 = "ISO-8859-1"; /** 8 位 UCS 转换格式 */ public static final String UTF_8 = "UTF-8"; /** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */ public static final String UTF_16BE = "UTF-16BE"; /** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */ public static final String UTF_16LE = "UTF-16LE"; /** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */ public static

iconv(): Detected an illegal character in input...

断了今生、忘了曾经 提交于 2019-12-03 05:22:25
用iconv函数将gbk转换为utf-8时,怎么有些汉字会出现l乱码问题, Notice: iconv() [function.iconv]: Detected an illegal character in input string 造成此错误的原因: 啰不是gb2312 字符集里的字,是gbk字符集里的字。 iconv("gbk", "UTF-8//IGNORE", $str); 这样就不会Notice: iconv() [function.iconv]: 在UTF-8后面加上 //IGNORE 如果在gbk上加会不好使 不知道为什么 希望知道的解答一下 来源: oschina 链接: https://my.oschina.net/u/346962/blog/86085

解析gbk格式带中文的xml

匿名 (未验证) 提交于 2019-12-03 00:39:02
方案 代码 1 def parse_xml_node(node): 2 if len(node.getchildren()) == 0: 3 return node.text if node.text is not None else ‘‘ 4 else : 5 node_dict = {} 6 for child in node.getchildren(): 7 if child.tag in node_dict.keys(): 8 if not isinstance(node_dict[child.tag], list): 9 node_dict[child.tag] = [node_dict[child.tag]] 10 node_dict[child.tag].append(parse_xml_node(child)) 11 else : 12 node_dict[child.tag] = parse_xml_node(child) 13 return node_dict 14 15 def parse_gbk_xml(filename): 16 import codecs 17 from xml.etree import ElementTree 18 with codecs.open(filename, ‘ r ‘ ,encoding= ‘ gbk ‘ ) as fp:

Qt读取ANSI格式文件――利用QTextCodec将其他编码格式转换为Unicode格式

匿名 (未验证) 提交于 2019-12-03 00:33:02
将GBK编码(ANSI的简体中文编码)转换为Unicode编码格式: QByteArray encodedString = "..."; QTextCodec *codec = QTextCodec::codecForName("GBK"); QString string = codec->toUnicode(encodedString); 将Unicode编码转换为GBK编码格式: QString string = "..."; QTextCodec *codec = QTextCodec::codecForName("GBK"); QByteArray encodedString = codec->fromUnicode(string); 下面给出读取GBK编码的TXT文件的示例代码: QFile file("FileName"); QTextCodec *codec = QTextCodec::codecForName("GBK"); QString line = codec->toUnicode(file.readLine()); 文章来源: Qt读取ANSI格式文件――利用QTextCodec将其他编码格式转换为Unicode格式