java(16)--中英文混合,截取一定长度,保持不乱码
来源:互联网 发布:安卓微信加好友软件 编辑:程序博客网 时间:2024/06/18 15:30
因为中文是两个字节,如果需要截取一定字符长度,比如短信字数,所以需要保证其不乱码
import java.io.UnsupportedEncodingException;public class Demo { /** * gb2312 gbk 区别 * gb2312 码表 兼容了一个 ascii码表 ascii字符占一个字节(正数) 中文占两个字节(两个负数) * 升级gbk码表 和上面一样, 不同在于: 中文 第一个字节是负数 第二个可正可负 * @throws UnsupportedEncodingException */ public static void main(String[] args) throws UnsupportedEncodingException {String str = "abc中国人"; byte[] buf = str.getBytes("gbk"); // ctrl+2,L // 截取数组的一部分,要求保留完整的中文 //decode(buf,8); decodeByGBK(buf, 6); } private static void decodeByGBK(byte[] buf, int len) { // gbk 编码 boolean b = false; // b true for(int i=0; i<len; i++) { if(b) b = false; else if(buf[i]<0) b = true; } if(b) len--; String str = new String(buf, 0, len); System.out.println(str); } private static void decode(byte[] buf, int len) { // 统计负数的个数 int count = 0; for(int i=0; i<len; i++) { if(buf[i]<0) count++; } if(count%2==1) len--; String str = new String(buf, 0, len); System.out.println(str); }}
0 0
- java(16)--中英文混合,截取一定长度,保持不乱码
- C#中英文混合字符串截取指定长度
- php混合字符串长度和截取 中英文
- 中英文混合长度的计算以及截取
- Java截取中英文混合字符串
- Java 截取中英文混合字符串
- Java 截取中英文混合字符串
- (JAVA)截取中英文混合字符串
- java按字节截取中英文混合字符串
- (JAVA)截取中英文混合字符串
- 用C#截取指定长度的中英文混合字符串
- 用C#截取指定长度的中英文混合字符串
- 用C#截取指定长度的中英文混合字符串
- ASP如何计算中英文混合字符串长度和截取字符串
- C#判断中英文混合字符串长度及截取函数
- PHP获取中英文混合字符串长度及截取
- ASP如何计算中英文混合字符串长度和截取字符串 .
- Qt上截取中英文混合字符串的指定长度内容
- Nginx安装部署
- 企业元老级员工的激励方式两大解决方案
- Apache安装部署静态网站
- VS2012注册ActiveX控件失败的解决方案
- poj3261Milk Patterns【可重叠最长重复子串次数大于k】
- java(16)--中英文混合,截取一定长度,保持不乱码
- 蓝桥杯 找单词
- android M上可能需要开发者注意的权限大全
- C++ Template Class List
- leetcode笔记:Increasing Triplet Subsequence
- 【操作系统】 进程与线程
- MVC 数据验证
- 常量指针与指针常量
- 10位世界级投资大师100金句