`
lt1988
  • 浏览: 17659 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

字符转码

    博客分类:
  • j2se
阅读更多

csdn上某贴 保存了 

 

下面是我的源代码,我先实现将GBK码转换为UTF-8码,但不能成功
请您分析一下,改进一下
public static void main( String args[] ) throws Exception
{
Scanner scanner = new Scanner( System.in );
String temp;
Charset  charset1  =    Charset.forName("GBK");  //映射
Charset  charset2  =    Charset.forName("UTF-8");

CharsetDecoder  decoder  =  charset1.newDecoder();  //解码器
CharsetEncoder  encoder  =  charset2.newEncoder();  //编码器

ByteBuffer  bytes = ByteBuffer.allocate(1024);//;

while( true )
{
temp = scanner.nextLine();

bytes.put( temp.getBytes() );
CharBuffer  chars  =  decoder.decode(bytes); 
bytes  =  encoder.encode(chars); 

String str = new String( bytes.array(), "UTF-8" );
System.out.println( "解码后:" + str );
}

}

 

 

答:你的代码整体上是正确的.个别小地方要注意:
1)bytes.put( temp.getBytes() ); 中的temp.getBytes() 在WIN平台运行是正常的,但在LINUX下运行会出问题的.故更好的办法是改为:temp.getBytes("GBK")
2)CharBuffer  chars  =  decoder.decode(bytes);  之前要加上:bytes.rewind();

故最后的完整代码是:

Java code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> import java.nio.*; import java.nio.charset.*; import java.util.*; public class Testa { public static void main( String args[] ) throws Exception { Scanner scanner = new Scanner( System.in ); String temp; Charset charset1 = Charset.forName("GBK"); //映射 Charset charset2 = Charset.forName("UTF-8"); CharsetDecoder decoder = charset1.newDecoder(); //解码器 CharsetEncoder encoder = charset2.newEncoder(); //编码器 ByteBuffer bytes = ByteBuffer.allocate(1024);//; // while( true ) { temp = scanner.nextLine(); bytes.put( temp.getBytes("GBK") ); //<==强制GBK,保证LINUX下也正确 bytes.rewind();//<==要绕回.否则decode()不正确 CharBuffer chars = decoder.decode(bytes); bytes = encoder.encode(chars); String str = new String( bytes.array(), "UTF-8" ); System.out.println( "解码后:" + str ); } } }
分享到:
评论

相关推荐

    国际化字符转码工具免安装版

    标题中的“国际化字符转码工具免安装版”指的是一个无需安装即可使用的软件,它专门用于处理涉及多种语言和编码方式的字符转换问题。在IT领域,国际化(Internationalization)通常是指设计和开发软件以适应不同地区...

    国际化字符转码_国际化

    国际化字符转码是IT领域中一个重要的概念,特别是在软件开发和网页设计中,因为全球化的市场需求使得软件和服务需要支持多种语言和字符集。这个过程涉及到将不同编码格式的字符转换成统一的标准,以便在不同的系统和...

    jvm字符转码

    在Java虚拟机(JVM)中,字符转码是一个关键的概念,它涉及到字符串的内部表示以及与不同编码格式之间的转换。让我们深入探讨一下这个主题。 首先,了解字符集的基础知识至关重要。字符集,如ASCII、ISO-8859-1、GB...

    字符转码utf8

    字符转码 字符转码utf8 dfdsf 额是非得失

    各种字符转码

    在IT行业中,字符转码是一项基础且至关重要的技术,它涉及到数据的编码方式以及不同编码系统之间的转换。字符转码通常发生在处理不同语言或者不同计算机系统之间数据交换时,因为不同的编码格式对字符的表示方式可能...

    j2me常见问题(push,cmnet,cmwap,rms,字符转码...)

    本文将深入探讨J2ME中的一些常见问题,包括Push技术、网络连接(CMNET与CMWAP)、Record Management System(RMS)以及字符转码等核心概念。 首先,让我们讨论Push技术。在J2ME中,Push是指服务器主动向客户端发送...

    字符转码,gb2312 usc2 ,utf-8

    字符编码是计算机处理文本的基础,不同的编码方式对字符集的支持和表示形式有所差异。在IT领域,特别是文本处理和数据传输中,理解并熟练运用各种字符编码至关重要。本篇文章将详细探讨标题和描述中提到的“gb2312”...

    java字符转码的三种方法总结及实例

    在Java编程语言中,字符转码是一个常见的任务,特别是在处理多语言文本或与不同编码格式的文件交互时。本文将详细讲解Java中字符转码的三种主要方法,并通过实例进行说明。 1. **使用`String`类的构造器和`getBytes...

    JS字符集转码函数

    万能转码函数,解决中文字符转码问题、GBK转utf8问题,utf8转gbk等等各种转码、乱码问题。

    字符转码工具

    一个转换字符的工具,实用性强

    国际化字符转码器 unicode 转 utf-8 utf-8 转 unicode

    unicode -&gt; utf-8 utf-8 -&gt; unicode 国际化必备工具

    前后台字符集转码.txt

    根据提供的文件信息,本文将详细解析前后台字符集转码的相关知识点,包括字符集的基本概念、前后端如何处理字符集转码以及示例代码中的具体实现。 ### 字符集的基本概念 在计算机科学中,字符集(Character Set)...

    stata15中文乱码之转码.doc

    stata15 中文乱码之转码解决方案 在使用 stata15 进行数据分析时,常常会遇到中文乱码的问题,这使得数据的展示和分析变得非常困难。因此,本文将介绍如何在 stata15 中正确地显示中文,并解决中文乱码的问题。 为...

    js字符集转码函数

    根据给定的信息,本文将详细解释“js字符集转码函数”的相关内容,包括函数的作用、原理及使用方法。 ### js字符集转码函数概述 在Web开发中,字符集编码是一个重要的概念。不同的系统和软件可能采用不同的字符集...

    html中的特殊字符转换

    这些特殊字符在纯文本中直接使用时可能会导致解析错误或不预期的结果。为了正确显示这些字符,我们需要对它们进行转义。本篇将详细讲解HTML中的特殊字符转换及其重要性。 1. **特殊字符转义** HTML中,如果要显示...

    URL转码及不能被转码的特殊字符

    ### URL转码及不能被转码的特殊字符 在互联网技术中,URL(Uniform Resource Locator,统一资源定位符)作为网页地址的重要组成部分,在传输过程中必须遵循一定的格式规范。URL转码(也称为百分号编码或Percent-...

    windows字符编码转换库(iconv.dll)32位和64位

    gcc编译,内含已经编译好的32位和64位iconv。版本是1.16。 用Visual Studio IDE环境开发者要调用gcc的库需要用LoadLibrary GetProcAddress载入函数。

    摩尔斯电码,实现将字符转为摩尔斯电码的主体功能,能将摩尔斯电码通过串口上位机进行显示

    部分字符转码为摩尔斯电码功能需要完善,将摩尔斯电码滴答发送功能需要完善 2. 使用说明: 通过修改宏定义可以修改开关时间; 通过查看头文件可以方便移植到不同硬件上; 3. 适合人群: 适合STM32学习者,或者STM...

    Shift_JIS_table(unicode)码表

    随着信息技术的发展,Unicode成为国际上通用的字符编码标准,它为每种语言中的每个字符分配了唯一的数字。然而,在Unicode出现之前,不同的地区采用了不同的编码方案来表示本地语言,如Shift_JIS就是一种针对日文的...

    中英文字符编码查询_V1.1.zip

    3. 字符转码:工具可能具备将字符从一种编码格式转换到另一种的能力,例如从UTF-8转换到GBK,以适应不同的系统和环境需求。 4. 显示字节序列:对于二进制文件,工具可能会显示字符对应的字节序列,这对于理解数据...

Global site tag (gtag.js) - Google Analytics