Java里面内置字符串全部是utf-16编码,详细的编码方式看这里

import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Map; public class String2Bytes {
public static void main(String[] args) {
String str = "\u005Bab我";
Map<String, Charset> charsetMap = Charset.availableCharsets();
for(String charsetName : charsetMap.keySet()) {
System.out.println(charsetName + ":" + charsetMap.get(charsetName));
}
System.out.println(str.charAt());
//String的getBytes()方法是得到一个字串的字节数组,这是众所周知的。
//但特别要注意的是,本方法将返回该操作系统默认的编码格式的字节数组。
//如果你在使用这个方法时不考虑到这一点,你会发现在一个平台上运行良好的系统,放到另外一台机器后会产生意想不到的问题。
System.out.println(Arrays.toString(str.getBytes())); //附加级别的字符
char[] c = Character.toChars(Integer.parseInt("1D306", ));
String str1 = new String(c);
System.out.println(str1);
//附加级别的字符占用了2个代码单元
System.out.println(c.length);
System.out.println(str1.length());
//但是只占用一个代码点
System.out.println(str1.codePointCount(, str1.length())); //访问第一个代码单元,这种做法是错误的
System.out.println(str1.charAt()); //查看保存在内存里的方式
/*
* 算法
* H = Math.floor((c-0x10000) / 0x400)+0xD800
* L = (c - 0x10000) % 0x400 + 0xDC00
*/
System.out.println(Integer.toString((int)str1.charAt(), ));//0xD834
System.out.println(Integer.toString((int)str1.charAt(), ));//0xDF06 //访问第一个代码点,正确的做法
int index = str1.offsetByCodePoints(, );
System.out.println(str1.codePointAt(index)); String str2 = str1 + "abc";
//顺序访问一个String正确的方式
int count = str2.codePointCount(, str2.length());
for(int i=; i < count; ++i) {
int index1 = str2.offsetByCodePoints(, i);
int cp = str2.codePointAt(index1);
System.out.print(Character.toChars(cp));
}
System.out.println();
}
}

Java里面String的编码问题的更多相关文章

  1. java.lang.String.getBytes(String charsetName)方法实例

    java.lang.String.getBytes(String charsetName) 方法编码将此String使用指定的字符集的字节序列,并将结果存储到一个新的字节数组. 声明 以下是java. ...

  2. OC与c混编实现Java的String的hashcode()函数

    首先,我不愿意大家需要用到这篇文章里的代码,因为基本上你就是被坑了. 起因:我被Java后台人员坑了一把,他们要对请求的参数增加一个额外的字段,字段的用途是来校验其余的参数是否再传递过程中被篡改或因为 ...

  3. Java IO4:字符编码

    前言 字符编码,这本不属于IO的内容,但字节流之后写的应该是字符流,既然是字符流,那就涉及一个"字符编码的"问题,考虑到字符编码不仅仅是在IO这块,Java中很多场景都涉及到这个概 ...

  4. java和linux的编码

    最近要使用中科院计算所的关键词工具NLPIR,用java调用,在windows下测试后放到linux下跑,就发现会有乱码. windows下默认是GBK,linux下是utf-8,因此在意料之中(尽管 ...

  5. NDK(14)Native的char*和Java的String相互转换

    转自: http://www.cnblogs.com/canphp/archive/2012/11/13/2768937.html 首先确保C/C++源文件的字符编码是UTF-8与JAVA的class ...

  6. java中的url 编码与解码

    什么是application/x-www-form-urlencoded字符串? 答:它是一种编码类型.当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www ...

  7. 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  8. java中的字符编码方式

    1. 问题由来 面试的时候被问到了各种编码方式的区别,结果一脸懵逼,这个地方集中学习一下. 2. 几种字符编码的方式 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符 ...

  9. JAVA WEB 中的编码分析

    JAVA WEB 中的编码分析 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src {background-co ...

随机推荐

  1. js中点和向量的基本方法

    var Point=function(x,y){ this.x= Number(x.toFixed(2))||0; this.y=Number(y.toFixed(2))||0; } Point.pr ...

  2. 3.Exadata 软件体系结构

    整体架构和 smart scan Aasm Ehcc (混合例压缩 和 存储索引) SCAN Service 和 server pool DB SERVER -> DB instance -&g ...

  3. 将libFM模型变换成tensorflow可serving的形式

    fm_model是libFM生成的模型 model.ckpt是可以tensorflow serving的模型结构 亲测输出正确. 代码: import tensorflow as tf # libFM ...

  4. oracle基础知识(六)----spfile与pfile

    一, 认识参数文件      Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件.它们是在数据库实例启动时候加载的,决定了数据库的物理 结构.内存.数据库的限制及系统大量的默认值 ...

  5. centos7 中文乱码问题解决方法

    1.查看是否安装中文包 可以使用下面的命名查看系统是否安装了中文安装包. locale -a |grep "zh_CN" 没有输出,说明没有安装,输入下面的命令安装: yum gr ...

  6. 现学现卖】IntelliJ+EmmyLua 开发调试Unity中Xlua

    http://blog.csdn.net/u010019717/article/details/77510066?ref=myread http://blog.csdn.NET/u010019717 ...

  7. Jersey统一异常处理

    众所周知,java服务提供者提供给服务请求者应该是特定格式的数据,而不能出现异常栈类似信息,那么jersey中,如何添加统一的异常处理呢? 针对jersey启动如果是实现了ResourceConfig ...

  8. SpringBoot | 第三十一章:MongoDB的集成和使用

    前言 上一章节,简单讲解了如何集成Spring-data-jpa.本章节,我们来看看如何集成NoSQL的Mongodb.mongodb是最早热门非关系数据库的之一,使用也比较普遍.最适合来存储一些非结 ...

  9. AtCoder Grand Contest 023 F - 01 on Tree

    Description 题面 Solution HNOI-day2-t2 复制上去,删点东西,即可 \(AC\) #include<bits/stdc++.h> using namespa ...

  10. flask在centos下搭建web服务【uwsgi,nginx】

    centos操作系统 uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有任何关系,你提供动态内容的服务器可以是apache/nginx/tomcat,当然也可以是uWSG ...