Java中如何对字符串进行utf-8编码

 更新时间:2023年04月13日 09:23:42   作者:Hemist  
这篇文章主要介绍了Java中如何对字符串进行utf-8编码问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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("�","")
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 中的 File类详情

    Java 中的 File类详情

    这篇文章主要介绍了Java 中的 File类,对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已,下面我们来看看文章对File类的详情介绍吧,需要的朋友也可以参考一下
    2021-11-11
  • java8新特性教程之time包使用总结

    java8新特性教程之time包使用总结

    Java8新增了date和time的util包,下面这篇文章主要给大家介绍了关于java8新特性教程之time包使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Java编程实现轨迹压缩之Douglas-Peucker算法详细代码

    Java编程实现轨迹压缩之Douglas-Peucker算法详细代码

    这篇文章主要介绍了Java编程实现轨迹压缩之Douglas-Peucker算法详细代码,具有一定借鉴价值,需要的朋友可以参考。
    2017-11-11
  • java链表应用--基于链表实现队列详解(尾指针操作)

    java链表应用--基于链表实现队列详解(尾指针操作)

    这篇文章主要介绍了java链表应用--基于链表实现队列,结合实例形式分析了java基于链表实现队列尾指针相关操作使用技巧,需要的朋友可以参考下
    2020-03-03
  • 教你如何用Java根据日期生成流水号

    教你如何用Java根据日期生成流水号

    这篇文章主要介绍了教你如何用Java根据日期生成流水号,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java中char[]输出不是内存地址的原因详解

    Java中char[]输出不是内存地址的原因详解

    这篇文章主要介绍了关于Java中char[]输出为什么不是内存地址的原因,文中通过示例代码介绍的很详细,需要的朋友们可以参考学习。
    2017-03-03
  • Java中类加载过程全面解析

    Java中类加载过程全面解析

    这篇文章主要介绍了Java中类加载过程全面解析,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 如何使用JDBC连接数据库并执行SQL语句

    如何使用JDBC连接数据库并执行SQL语句

    JDBC是Java数据库连接的缩写,是Java程序与数据库进行交互的标准API。JDBC主要包括Java.sql和javax.sql两个包,通过DriverManager获取数据库连接对象Connection,并通过Statement或PreparedStatement执行SQL语句
    2023-04-04
  • 基于SpringBoot创建Web页面并热更新的操作步骤

    基于SpringBoot创建Web页面并热更新的操作步骤

    SpringBoot是一个用于快速开发单个微服务的框架,它基于 Spring 框架,简化了Spring应用的初始化过程和开发流程,本文给大家介绍了如何基于SpringBoot创建Web页面并热更新,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • MyBatis中criteria的or(或查询)语法说明

    MyBatis中criteria的or(或查询)语法说明

    这篇文章主要介绍了MyBatis中criteria的or(或查询)语法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12

最新评论