- 浏览: 994607 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (394)
- OSGI (14)
- 多线程 (10)
- 数据库 (30)
- J2ME (1)
- JAVA基础知识 (46)
- 引用包 (1)
- 设计模式 (7)
- 工作流 (2)
- Ubuntu (7)
- 搜索引擎 (6)
- QT (2)
- Ubuntu下编程 (1)
- 小程序 (2)
- UML (1)
- Servlet (10)
- spring (16)
- IM (12)
- 文档视频转为flash格式在线播放 (19)
- Maven (8)
- 远程调用 (2)
- PHPRPC (1)
- EXTJS学习 (2)
- Hibernate (16)
- 技术文章 (38)
- flex (5)
- 海量数据处理 (5)
- FTP (8)
- JS (10)
- Struts (1)
- hibernate search (13)
- JQuery (2)
- EMail (3)
- 算法 (4)
- SVN (7)
- JFreeChart (4)
- 面试 (4)
- 正规表达式 (2)
- 数据库性能优化 (10)
- JVM (6)
- Http Session Cookie (7)
- 网络 (12)
- Hadoop (2)
- 性能 (1)
最新评论
-
hy1235366:
能够随便也发一下,你退火算法程序使用的DistanceMatr ...
模拟退火算法总结(含例子)(转) -
梅强强:
感谢分享。。帮大忙了
swftools转换文件时线程堵塞问题的解决方法 -
wenlongsust:
openoffice和文件不在同一个服务器上,用过吗?
[JODConverter]word转pdf心得分享(转) -
2047699523:
如何在java Web项目中开发WebService接口htt ...
利用Java编写简单的WebService实例 -
abingpow:
唉,看起来好像很详细很不错的样子,可惜不是篇面向初学者的文章, ...
Spring与OSGi的整合(二)(转)
getBytes 的功能是将字符转换成字节数组, gbk.getBytes("GB2312") 用GB2312翻译成字节数组, new String(gbk.getBytes("GB2312"),"UTF-8"); 把用GB2312翻译成字节数组,再用UTF-8翻译成字符串。 兄弟你想下,这里有没有问题? 这就是乱码的原因。 下面再分析下你具体的问题: GB23121 -》ISO-8859 两个字节到一个字节 反过来,再一个字节到两个字节,不会有问题, 因为翻译时,个数不会多也不会少。 再看GBK -》UTF-8 两个字节翻译的字节数组现在要用三个字节翻译 就是说你 4个字节给人家 人家是一次要三个,出现什么情况? 拿了三个 剩下一个不够,人家就自己去添加。 你再翻译回来的时候就是 6个字节了,也说明为什么变成了三个字 提供一个转换方法: public byte[] gbk2utf8(String chenese){ char c[] = chenese.toCharArray(); byte [] fullByte =new byte[3*c.length]; for(int i=0; i<c.length; i++){ int m = (int)c[i]; String word = Integer.toBinaryString(m); // System.out.println(word); StringBuffer sb = new StringBuffer(); int len = 16 - word.length(); //补零 for(int j=0; j<len; j++){ sb.append("0"); } sb.append(word); sb.insert(0, "1110"); sb.insert(8, "10"); sb.insert(16, "10"); // System.out.println(sb.toString()); String s1 = sb.substring(0, 8); String s2 = sb.substring(8, 16); String s3 = sb.substring(16); byte b0 = Integer.valueOf(s1, 2).byteValue(); byte b1 = Integer.valueOf(s2, 2).byteValue(); byte b2 = Integer.valueOf(s3, 2).byteValue(); byte[] bf = new byte[3]; bf[0] = b0; fullByte[i*3] = bf[0]; bf[1] = b1; fullByte[i*3+1] = bf[1]; bf[2] = b2; fullByte[i*3+2] = bf[2]; } return fullByte; }
应该编码转换的时候丢失了字节,你没有发现你输入的是偶数个字的时候正常,奇数个的时候乱码,具体的字码长度我也不是很了解
String str1 = new String(str.getBytes("UTF-8"),"GBK");
System.out.println(str1.length());
String str2 = new String(str1.getBytes("GBK"),"UTF-8");
System.out.println(str2.length());); 打印出来的字符串长度就不一样的
UTF8每个汉字占用3个字节,这样在某些地方文字个数的计算就和GBK编码的不一样,UTF-8使用可变长度字节来储存 Unicode字符,例如ASCII字母继续使用1字节储存,重音文字、希腊字母或西里尔字母等使用2字节来储存,而常用的汉字就要使用3字节。辅助平面字符则使用4字节。 GB 18030标准采用单字节、双字节和四字节三种方式对字符编码。单字节部分使用0×00至0×7F码(对应于ASCII码的相应码)。双字节部分,首字节码从0×81至0×FE,尾字节码位分别是0×40至0×7E和0×80至0×FE。四字节部分采用GB/T 11383未采用的0×30到0×39作为对双字节编码扩充的后缀,这样扩充的四字节编码,其范围为0×81308130到0×FE39FE39。其中第一、三个字节编码码位均为0×81至0×FE,第二、四个字节编码码位均为0×30至0×39。
按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
载自:http://jlins.iteye.com/blog/574670
发表评论
-
Java线程(二):线程同步synchronized和volatile(转)
2014-03-17 00:09 875转载自:http://blog.csdn.net/ghsau ... -
浅谈Java多线程的同步问题(l转)
2014-03-17 00:07 909非常好的使用线程同步的文章 转载自http://www.c ... -
JVM的垃圾回收机制详解和调优(转)
2013-06-20 10:31 7091.JVM的gc概述 gc即垃圾 ... -
深入探讨 Java 类加载器(转)
2013-06-20 10:17 868转载自:http://www.ibm.com/develop ... -
java反射详解(推荐转)
2013-05-15 10:42 875载自:http://www.cnblogs.com/roll ... -
java静态方法、非静态代码块{}、静态代码块static{}(转)
2012-07-13 14:33 1473转自:http://www.cn-java.com/www1/ ... -
error 与 Exception区别(转)
2012-07-13 14:31 1072Error类和Exception类都继承自Throwab ... -
java面试题有哪些常见的(转)
2012-07-13 14:30 1192第一,谈谈final, finally, finaliz ... -
java Math.round()(转)
2012-07-11 14:17 1176public class MathTest { ... -
Java异常的分类(转)
2012-07-11 08:57 1039转载自:http://blog.csdn.net/ilibab ... -
java 内联函数(转)
2012-06-28 23:40 1815以前用过C++,知道它 ... -
堆栈,堆栈,堆和栈的区别(转)
2011-05-08 00:36 1178不防看看这篇文章:http://www.cppblog.com ... -
第二十章 指针 二 为指针分配和释放空间(转)
2011-05-08 00:10 1482载自<白话c++>:http://17de.com ... -
数据结构中各种时间复杂度(转)
2011-05-06 09:58 2787(1)冒泡排序 冒泡排序就是把小的元素往 ... -
C#之int挑战Java之Integer(转)
2011-04-28 14:24 1329可能有些图会看不到,可以到转载处去阅读:http://kb.c ... -
Java: 堆 & 栈(转)
2011-04-28 14:16 1380栈是运行时的单位,而堆是存储的单位。栈解决程序的运行问题,即程 ... -
native2ascii 使用方法 及 Java字符编码(转)
2011-04-18 01:17 2709在做Java开发的时候,常 ... -
Unicode,ISO-8859,GBK,UTF-8编码及相互转换(java)(转)
2011-04-18 01:15 68681、函数介绍在Java中,字符串用统一的Unicode编码 ... -
Java TreeMap的简单实现(转)
2011-04-18 00:29 1091TreeMap的实现与二叉搜索树显示,其对应的节点格式为 E ... -
Java乱码问题分析(转)
2011-04-17 02:22 1491java采用unicode编码来处理字符。Java程序无论是从 ...
相关推荐
GBK、UTF-8批量文件3秒快速转码工具(支持GBK,UTF-8免费转换),UTF-8/GBK编码在线转换工具,压缩包可以有多目录与文件,如目录中有图片不会转码,但是会随转码好的文件一起打包下载。 使用帮助 . 上传压缩包(仅支持zip...
c 源码, gbk和utf8 互相转换(不含库) 通过查表实现转换 实际转换为 gbk -- unicode --utf8
C#写的 GBK GB2312 UTF-8转换 功能简单,仅供学习
基于MFC CString的GBK与UTF-8编码转换,在网上找到一些代码都有问题,但都存在一些错误。现在改好了,与大家分享一下。 (MFC 非UNICODE)
可以实现编码转换,使用编码utf-8转换成gbk
批量文件转码工具(支持 GBK,UTF-8 转换)。 批量文件转码工具,支持GBK,UTF-8转换,window下面使用,亲测可以使用!!!!!!!!!! 批量 文件转码 工具 GBK UTF-8
请使用这款软件,直接将代码转换为UTF-8 注意: 1、xml不需要转换,因为xml默认是utf-8,在你新建的时候已经是正确的格式了 2、图片更不需要转换 3、bin目录,gen目录的直接忽略 4.只需要src目录的代码转换,请确保...
PB的utf-8转换,包括加码解码等等 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
批量文件转码工具,支持GBK,UTF-8转换,window下面使用,亲测可以使用!!!!!!!!!!
GBK---UTF-8 格式互相转换转换适用。至于怎么用自己去研究
GBK与UTF-8之间的转换
eclispe GBK转UTF-8乱码解决 插件,统一解决
C语言字符编码转换UNICODE、GBK、UTF-8互相转换
NULL 博文链接:https://bingyingao.iteye.com/blog/2169164
文件包含:gbk2utf-8.bat、utf-82gbk.bat、iconv.exe及使用说明.txt四个文件 使用说明:1把要转换的所有.h和.c文件拷入该目录下,双击相应的bat文件即可。 2转换结果会保存在utf-8Res或gbkRes目录下。 3如果转换除...
老项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息会出现乱码。所以写了个小的方法类,将java文件的编码格式从GBK转UTF-8
批量文件转码工具,支持GBK,UTF-8转换,window下面使用,亲测可以使用!
自制软件,文本批量格式转换,将ansi(即gbk)与utf-8相互转换,自己编写用来在浏览器上读txt小说时,避免乱码用的,共享出来方便大家使用,支持gbk和utf-8。
*文件编码转换,gbk与utf-8互转 * changeFileCode 方法,4个属性:(需要转换的文件目录,转换后的文件目录,当前文件编码格式,转换成需要的文件编码); * 需要转换的文件目录,转换后的文件目录--可以为同一路径...