Java中如何对字符串进行utf-8编码
作者:Hemist 时间:2023-01-20 16:13:04
java对字符串进行utf-8编码
我们在调用第三方 API 时,常常会被要求用到路径变量,而路径变量一般都是 utf-8 编码的,因此需要对传入的字符串参数进行 utf-8 编码处理。
本文提供一种使用 URLEncoder 库进行编码的方式。
废话少说,上代码。
// 使用 URLEncoder 库对字符串进行 utf-8 编码
import java.net.URLEncoder;
public String encodePathVariable(String pathVariable) {
String ret = "default";
try {
ret = URLEncoder.encode(pathVariable, "utf-8");
System.out.println(pathVariable + " : " + ret);
}catch(Exception e) {
System.out.println(e);
}
return ret;
}
java按照字节截取字符串-utf-8
如何按照utf-8的字节截取字符串呢?
utf-8,中文一个汉字是三个字节,一个字母或特殊符号是1个字节。
String类没有提供按字节截取字符串的方法,
StringUtil提供了截取的方法,但是默认是8858-1的,而且不能指定编码格式
但是给了我们思路,我们就将这段代码粘贴出来,将后面的编码格式给改成utf-8的
建个测试方法测试下
还是有些问题,截取3个字节时,正好把中字截取出来了,4个字节时有乱码,5个字节时,还有乱码,6个字节时,打印了两个字节,正好两个中文汉字。也就是说,本身是三个字节的文字,我们只取了它的1个字节,所以识别不出来出现了乱码!
经过反复测试,乱码就是�这种符号,别的符号没测出来,应该也没啥别的符号,我们就将这种符号截取掉就行了。
最后测试的代码
乱码没有了,而且准确率还高,因为字符串的情况挺复杂的,什么都有,文字,标点,特殊符号,穿插其中,字节也不一样,网上看了很多例子,都是他们自己编写的算法啥的,用了之后,错误率挺高的。
/**
*string:字符串
offset:从哪个字节开始
len:从哪个字节结束
*/
public static String getFromCompressedUnicode(String string,int offset,int len) throws UnsupportedEncodeingException{
byte[] bytes = string.getBytes("utf-8");
int len_to_use = Math.min(len,bytes.length - offset);
return new String(bytes,offset,len_to_use,"utf-8").replaceAll("�","")
}
来源:https://blog.csdn.net/qq_39249627/article/details/125132429
标签:Java,字符串,utf-8,编码
0
投稿
猜你喜欢
Android获取常用辅助方法(获取屏幕高度、宽度、密度、通知栏高度、截图)
2023-10-30 19:42:57
Flutter加载图片流程之ImageCache源码示例解析
2023-07-04 01:56:23
SpringBoot下如何实现支付宝接口的使用
2023-11-06 14:26:15
Spring Boot Security 结合 JWT 实现无状态的分布式API接口
2021-06-04 05:01:17
一文带你学会Java事件机制
2022-07-22 05:05:11
Android自定义View实现九宫格图形解锁(Kotlin版)
2022-04-09 11:10:50
Mybatis如何传入多个参数的实现代码
2022-02-26 02:52:24
RocketMQ broker文件清理源码解析
2022-04-28 07:09:12
java LeetCode刷题稍有难度的贪心构造算法
2022-01-06 20:56:21
C#导出Excel的示例详解
2021-12-03 01:55:51
Spring Boot使用AOP实现REST接口简易灵活的安全认证的方法
2023-04-10 04:38:44
git自定义_动力节点Java学院整理
2021-06-11 22:05:49
详解如何在Java中实现堆排序算法
2023-11-11 11:34:46
Java多线程开发工具之CompletableFuture的应用详解
2023-08-30 00:43:00
在C#项目中如何使用NHibernate详解
2022-01-24 08:46:17
Java优秀类库Hutool使用示例
2021-12-09 18:12:06
Android 屏幕双击事件的捕获简单示例
2022-08-30 11:02:55
C# 启用事务提交多条带参数的SQL语句实例代码
2021-06-20 15:22:09
Java中通过Class类获取Class对象的方法详解
2021-11-09 17:12:57
java ArrayList和Vector的区别详解
2023-03-08 14:47:05