- 浏览: 1007737 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 914转载自:http://blog.csdn.net/ghsau ... -
浅谈Java多线程的同步问题(l转)
2014-03-17 00:07 955非常好的使用线程同步的文章 转载自http://www.c ... -
JVM的垃圾回收机制详解和调优(转)
2013-06-20 10:31 7401.JVM的gc概述 gc即垃圾 ... -
深入探讨 Java 类加载器(转)
2013-06-20 10:17 898转载自:http://www.ibm.com/develop ... -
java反射详解(推荐转)
2013-05-15 10:42 903载自:http://www.cnblogs.com/roll ... -
java静态方法、非静态代码块{}、静态代码块static{}(转)
2012-07-13 14:33 1511转自:http://www.cn-java.com/www1/ ... -
error 与 Exception区别(转)
2012-07-13 14:31 1100Error类和Exception类都继承自Throwab ... -
java面试题有哪些常见的(转)
2012-07-13 14:30 1219第一,谈谈final, finally, finaliz ... -
java Math.round()(转)
2012-07-11 14:17 1210public class MathTest { ... -
Java异常的分类(转)
2012-07-11 08:57 1067转载自:http://blog.csdn.net/ilibab ... -
java 内联函数(转)
2012-06-28 23:40 1850以前用过C++,知道它 ... -
堆栈,堆栈,堆和栈的区别(转)
2011-05-08 00:36 1208不防看看这篇文章:http://www.cppblog.com ... -
第二十章 指针 二 为指针分配和释放空间(转)
2011-05-08 00:10 1516载自<白话c++>:http://17de.com ... -
数据结构中各种时间复杂度(转)
2011-05-06 09:58 2811(1)冒泡排序 冒泡排序就是把小的元素往 ... -
C#之int挑战Java之Integer(转)
2011-04-28 14:24 1359可能有些图会看不到,可以到转载处去阅读:http://kb.c ... -
Java: 堆 & 栈(转)
2011-04-28 14:16 1419栈是运行时的单位,而堆是存储的单位。栈解决程序的运行问题,即程 ... -
native2ascii 使用方法 及 Java字符编码(转)
2011-04-18 01:17 2752在做Java开发的时候,常 ... -
Unicode,ISO-8859,GBK,UTF-8编码及相互转换(java)(转)
2011-04-18 01:15 69071、函数介绍在Java中,字符串用统一的Unicode编码 ... -
Java TreeMap的简单实现(转)
2011-04-18 00:29 1118TreeMap的实现与二叉搜索树显示,其对应的节点格式为 E ... -
Java乱码问题分析(转)
2011-04-17 02:22 1525java采用unicode编码来处理字符。Java程序无论是从 ...
相关推荐
### JAVA字符编码详解:Unicode, ISO-8859-1, GBK, UTF-8 及其相互转换 #### 一、引言 在Java编程中,字符编码的管理和转换是一项基本而又重要的任务。不同的编码标准适用于不同的场景,而理解和掌握这些编码之间...
"UTF-8 编码转换详解" 1. UTF-8 编码的重要性:在 WEB 开发中,UTF-8 编码扮演着非常重要的角色,特别是在传递中文时,必须经过编码的动作,否则可能会出现乱码的情况。 2. 使用 URLEncoder.encode() 方法:在 ...
《豆葵 GB/BIG5/UTF-8 文件编码批量转换工具详解》 在信息技术领域,文件编码是一个重要的概念,不同的编码格式适用于不同的场景,如GBK(兼容GB2312)、BIG5(主要应用于繁体中文)和UTF-8(全球通用的多语言编码...
这个转换过程通常涉及查找每个UTF-8字符对应的GBK编码值,并用GBK编码的字节序列替换原UTF-8序列。 压缩包中的"gbk_utf8_unicode.c"和"gbk_utf8_unicode.h"文件很可能包含了实现这种转换的函数和相关配置。在实际...
这篇“Android UTF-8转码实例详解”将深入探讨如何在Android环境中进行UTF-8编码和解码。 首先,了解UTF-8编码的基本原理。UTF-8是一种变长编码,它根据字符的Unicode码点长度使用1到4个字节。ASCII字符(如英文...
在"JEECMS 3.04 模版标签字符 GBK UTF8对照"中,提供了将GBK编码的模板标签转换为UTF-8编码的对照表。开发者可以通过这个对照表,将原有的GBK编码模版标签转换成UTF-8,以确保在Unix环境下正常工作。这个过程通常...
客户端发送的数据和服务器端接收的数据可能存在编码不一致的情况,尤其是在处理HTTP请求时,若没有明确指定字符集,浏览器通常会默认使用UTF-8编码进行传输,这可能导致服务器接收到的数据出现乱码。 4. **数据库...
### ASP 下 UTF-8 页面乱码的解决方法详解 #### 一、引言 在Web开发过程中,尤其是早期使用ASP进行开发的时候,遇到字符编码问题是很常见的。其中一种典型的问题就是在ASP环境下使用UTF-8编码时出现的乱码现象。...
GBK到UTF-8的转换涉及数据库表结构的更改,包括表的字符集设置、字段的字符集设置,以及数据的重新编码。 5. 数据库升级:升级过程中,需要对数据库中的所有表进行字符集转换,确保数据在新的编码环境下能够正确...
这里通过`getUTF8Bytes()`方法获取UTF-8编码的字节数组,以确保在无法使用指定编码时可以回退到UTF-8编码。 ### 2. 自定义ZipInputStream类(CnZipInputStream) #### (1) 创建并修改CnZipInputStream类 同样地,从...
例如,当源代码文件使用一种编码格式存储(如GBK),而编译器或解释器期望使用另一种编码格式(如UTF-8)时,就可能出现乱码问题。 #### 解决方案 针对Java乱码问题,可以通过以下几种方式进行处理: ##### 方法...
他们发现,Windows系统默认使用GBK编码,而Linux默认使用UTF-8编码,因此在处理文件名时需要进行编码转换。作者提供了一个自定义的`path_info()`函数来替代原生的`pathinfo`函数,以确保在处理中文文件名时能正确...
常见的字符编码包括GBK、GB2312、UTF-8等。 ##### 2.2 请求参数乱码 当用户通过表单提交数据时,如果表单数据的编码与服务器端处理数据的编码不一致,也会导致中文乱码。例如,当表单使用POST方法提交数据时,如果...
1. **兼容 ASCII**: 对于 ASCII 范围内的字符(即单字节字符),UTF-8 编码与 ASCII 完全相同。 2. **变长编码**: UTF-8 可以将 Unicode 字符转换为 1 至 4 个字节的编码。这使得 UTF-8 在处理不同语言时非常灵活。 ...
例如,要将一个名为“example.txt”的GBK编码文件转换为UTF-8编码,可以运行`iconv -f GBK -t UTF-8 example.txt > example_utf8.txt`。如果源文件和目标文件在同一目录下,且希望覆盖原文件,可以省略输出文件名。 ...
简体GBK版适用于使用GBK编码的帝国CMS7.2系统,而简体UTF-8版则用于UTF-8编码的系统。这两个版本的工具可以满足不同编码环境下关键词提取的需求,确保在不同环境下都能正确处理中文字符。 总的来说,"帝国CMS7.2...
- **GBK与Unicode转换**:如果在一个中文版Windows系统上,使用GBK编码保存文本文件,并尝试在代码中以UTF-8的方式处理这些文件,则会出现乱码问题。这是因为Windows默认将不带BOM标记的文本文件视为GBK编码。 - **...
- **转换文件名编码**:例如,将所有`.mp3`文件名从GBK编码转换为UTF-8编码,可以使用`convmv -f GBK -t UTF-8 *.mp3`命令。默认情况下,Convmv仅显示转换效果而不实际执行转换操作。要实际执行转换,需要加上`--no...
如果在上传到HDFS的文件编码与Hadoop默认的UTF-8不符,下载时就会出现乱码。解决方式是确保在上传文件前将其转换为UTF-8编码。 3. **MapReduce处理阶段**: MapReduce作业中的Mapper和Reducer可能会接收到乱码数据...
### 关于UTF-8编码与ASP中的CodePage详解 在探讨UTF-8编码与ASP中的CodePage设置之前,我们先来了解一下几个基本概念。 #### 1. 编码概述 编码是计算机处理文本的一种方式,它涉及到如何将字符转换为数字(即二...