String类的编码和解码问题

我们前面知道同一个字符在利用不同的编码表得到的结果一般是不一样的。

这里讨论个字符串的编码和解码问题

字符串的一些方法:

String(byte[] b,Charset charset);

String(byte[] b,int offset,int length,Charset charset);

byte[] getBytes(String charsetName)

什么是编码解码?

编码:把看得懂的变成看不懂的

解码:把看不懂的变成看得懂的

编码问题只要编码解码使用的而编码表是一致的就即可解决

一个小例子:谍战片(发电报,接电报)

码表:  小本子

    数值  字符

信息:

今天下午2:00,老地方见

发电报:  字符---数值----二进制   电报机101010...

收电报:  二进制----十进制---码表----字符-----拼接成信息

windows的默认编码是本地编码是GBK

package com.StringTransform;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class StringTransformDemo {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String s="你好";
//        byte[] b=s.getBytes();//[-60, -29, -70, -61] 编码  2个字节代表一个中文
//        byte[] b=s.getBytes("GBK");//[-60, -29, -70, -61] 编码结果完全相同,还可以多次测试知道,默认编码是GBK
        byte[] b=s.getBytes("utf-8");//[-28, -67, -96, -27, -91, -67] utf-8一般将中文变成3个字节表示一个中文
        System.out.println(Arrays.toString(b));
//        String message=new String(b);//解码  使用GBK编码的时候直接解码也成功,所以默认解码方式也是GBK  直接解码utf-8出现浣犲ソ
        String message=new String(b,"utf-8"); //使用对应的编码表解码发现就能得到想要的信息
        System.out.println(message);
    }

}
时间: 2024-10-03 13:27:52

String类的编码和解码问题的相关文章

字符串工具类、数组工具类、集合工具类、转型操作工具类、编码与解码操作工具类

package hjp.smart4j.framework.util; import org.apache.commons.lang3.StringUtils; /** * 字符串工具类 */ public final class StringUtil { /** * 字符串分隔符 */ public static final String SEPARATOR=String.valueOf((char)29); /** * 判断字符串是否为空 */ public static boolean i

了解URL编码的基本概念,在javascript和java程序中使用内置的API进行编码和解码

1.URL编码的基本概念 URL只能使用US-ASCII 字符集来通过因特网进行发送.由于URL常常会包含 ASCII 集合之外的字符,URL必须转换为有效的 ASCII 格式.URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符.URL 不能包含空格,URL 编码通常使用 + 来替换空格.所谓URL编码,就是将非US-ASCII字符和US-ASCII中的特殊字符,用相应的字符集编码来表示.比如,汉字"你",如果用UTF-8编码,出现在URL

iOS URL中汉字的编码和解码

发现NSString类中有内置的方法可以实现.他们分别是: - (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding 只要传入相应的编码即可以进行编码和解码了,不过此方法是对整个Url进行编码的所以如果有Query Str

使用 URLDecoder 和 URLEncoder 对中文字符进行编码和解码

摘要: URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之间的相互转换.在本文中,我们以使用URLDecoder解决GET请求中文乱码问题为场景说明 URLDecoder/URLEncoder 的用法,并给出了 application/x-www-form-urlencoded MIME 字符串的编码规则. 一. URLDecoder/URLEncoder 使用场景概述 URLDecode

String类的一些转换功能(6)

1:把字符串转换成字节数组 getBytes() 如: String s = "你好啊!" //编码 byte [] arr = s.getBytes();//这里默认编码格式是gbk2310 当然你也可以传一个编码格式,但是解码时候也要传 for(int i =0;i<arr.length;i++){ System.out.print(arr[i]+" "); //这里输出的是对应GBK编码表的编码 } //解码 通过String的构造函数来解码 Strin

黑马程序员——Java基础---String类

--Java培训.Android培训.iOS培训.UI培训.PHP培训.期待与您交流! -- Scanner的概述和方法介绍 1.Scanner类的构造方法 Scanner(InputStream source) 2. 一般方法 hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等.如果需要判断是否包含下一个字符串,则可以省略Xxx package com.geekds.scanner; import java.util.Scanner; public cl

mina的编码和解码以及断包的处理,发送自定义协议,仿qq聊天,发送xml或json和

最近一段时间以来,mina很火,和移动开发一样,异常的火爆.前面写了几篇移动开发的文章,都还不错,你们的鼓励就是我最大的动力.好了,废话少说.我们来看下tcp通讯吧. tcp通讯对于java来说是很简单的.就是socket,也就是大家常说的套接字.大家不要把它看的很难.说白了tcp通讯其实就是数据流的读写.一条输入流,一条输出流.分别复杂发消息和接收消息. 明白了这些,ok,我们来看看我写的例子吧.先看服务器端的测试类的源码: package com.minaqq.test; import co

常见对象之String类

一:String类概述 1.字符串字面值"abc"也可以看成是一个字符串对象. 2.字符串时常量,一旦被赋值,就不能被改变. 3.String类重写了toString方法. 二:String类常用构造方法 1.String()           初始化一个新创建的 String 对象,使其表示一个空字符序列. 1 String str1 = new String(); 2 System.out.println(str1); 2.String(byte[] bytes)        

String类中的常用方法

String类 一.转换成String方法 1.public String(); 空参构造 初始化一个新创建的 String 对象,使其表示一个空字符序列 2.public String(byte[] bytes); 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String 将97,97.99转成ascll码表对应的字符; 3.public String(byte[] bytes,int index,int length); 分配一个新的 String,使其表示字符数组参数