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);
} }
String类的编码和解码问题的更多相关文章
- C# Socket编程(3)编码和解码
在网络通信中,很多情况下:比如说QQ聊天,通讯双方直接传递的都是字符信息.但是字符信息并不能够直接通过网络传输,这些字符集必须先转换成一个字节序列后才能够在网络中传输,于是这里就产生了编码和解码的概念 ...
- String类的一些转换功能(6)
1:把字符串转换成字节数组 getBytes() 如: String s = "你好啊!" //编码 byte [] arr = s.getBytes();//这里默认编码格式是g ...
- 【转】python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode
原文网址:http://blog.csdn.net/trochiluses/article/details/16825269 摘要:在进行python脚本的编写时,如果我们用python来处理网页数据 ...
- 【转】C# Socket编程(3)编码和解码
[转自:https://www.cnblogs.com/IPrograming/archive/2012/10/13/CSharp_Socket_3.html] 在网络通信中,很多情况下:比如说QQ聊 ...
- Day 19:Properties配置文件类、打印流(printStream) 、 编码与解码
Properties(配置文件类): 主要用于生产配置文件与读取配置文件的信息. Properties要注意的细节: 1. 如果配置文件的信息一旦使用了中文,那么在使用store方法生成配置文件的时 ...
- Android 中的编码与解码
前言:今天遇到一个问题,一个用户在登录的时候,出现登录失败.但是其他用户登录都是正常的,经过调试发现登录失败的用户的密码中有两个特殊字符: * .# . 特殊符号在提交表单的时候,出现了编码不一样的 ...
- android Java BASE64编码和解码二:图片的编码和解码
1.准备工作 (1)在项目中集成 Base64 代码,集成方法见第一篇博文:android Java BASE64编码和解码一:基础 (2)添加 ImgHelper 工具类 package com.a ...
- [SAP ABAP开发技术总结]字符编码与解码、Unicode
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- iOS URL中汉字的编码和解码
发现NSString类中有内置的方法可以实现.他们分别是: - (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncod ...
随机推荐
- kivy sdl2 - ImportError: DLL load failed: 找不到指定的模块
from kivy.app import App from kivy.uix.button import Button class TestApp(App): def build(self): ret ...
- ABP官方文档翻译 1.1 介绍
介绍 介绍 快速示例 其他 启动模板 如何使用 介绍 我们通常会根据不同的需求来创建不同的应用程序.但是对于一些通用相似的结构总是一遍又一遍的实现,至少在某种程度上是这样的.常见的通用模块如授权.验证 ...
- 在Pycharm中配置Github
Pycharm是当前进行python开发,尤其是Django开发最好的IDE.GitHub是程序员的圣地,几乎人人都在用. 本文假设你对pycharm和github都有一定的了解,并且希望在pycha ...
- Base64编码原理
Base64编码之所以称为Base64,是因为其使用64个字符来对任意数据进行编码,同理有Base32.Base16编码.标准Base64编码使用的64个字符为: 这64个字符是各种字符编码(比如AS ...
- nodeJs和JavaScript的异同
JavaScript组成:ECMAScript(定义这门语言的基础,比如语法.数据类型.结构以及一些内置对象等).DOM(基于ECMASCRIPT,扩展出来的用于操作页面元素的方法).BOM(基于EC ...
- 06_MySQL DQL_分组查询
# 分组查询/*语法: select 分组函数,列(group by中出现的字段) from 表 [where 筛选条件] group by 分组的列表(单个字段,多个字段,函数,表达式) [havi ...
- sonar总结--
maven的setting.xml 配置 https://www.cnblogs.com/javawebsoa/p/3206504.html
- 监控控制台是否运行的bat
@echo offrem set secs=5set srvname="TRS.Export.Scheduler.exe" echo.echo ================== ...
- java 之 find 命令
转自:https://blog.csdn.net/holyshit666/article/details/52296966 find命令是比较常用的命令,用来在特定目录下查找具有某种特征的文件. 一: ...
- angular之自定义管道
1,装了angular2 的 cli之后,cmd中命令建立个管道文件 ng g p <name>; 如建一个在pipe文件中建一个add.pipe.ts文件 可以这么么写 ng g p p ...