String 与 UTF-8 byte 数组的相互转化

String 与 UTF-8 byte 数组的相互转化


        String testStr = "1234qwerty";

        // String 转 UTF-8 byte 数组
        byte[] inputByte = testStr.getBytes( "UTF-8" );

 

        // UTF-8 byte 数组转为 string,方法 1
        String st = new String( inputByte, "utf-8" );
        System.out.println( st );                      // 打印 1234qwerty

 

        // UTF-8 byte 数组转为 string,方法 2
        StringBuffer sbf = new StringBuffer();

        for ( int i = 0; i < inputByte.length; i++ ) {
            sbf.append( ( char ) inputByte[ i ] );
        }

        System.out.println( sbf.toString() );     // 打印 1234qwerty

### Java 中 String UTF-8 编码 在 Java 中,`String` 类型默认是以 UTF-16 形式存储字符。然而,在许多情况下,特别是涉及到网络传输或文件读写时,需要将 `String` 换为特定的字节编码形式,比如 UTF-8。 #### 将字符串换为 UTF-8 编码的字节数组 可以通过调用 `getBytes()` 方法并指定 `"UTF-8"` 参数来实现这一目标: ```java try { byte[] utf8Bytes = oldString.getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { // 处理异常情况 } ``` 此操作会按照 UTF-8 的规则将给定的字符串转化为相应的字节序列[^1]。 #### 从 UTF-8 编码的字节数组创建新的字符串对象 如果已经有了一个采用 UTF-8 编码表示某些文本内容的字节数组,则可以利用如下方式将其还原回原始字符串: ```java try { String restoredString = new String(utf8Bytes, "UTF-8"); } catch (UnsupportedEncodingException e) { // 处理异常情况 } ``` 这段代码能够确保即使原字符串中含有非 ASCII 字符也能正确恢复。 #### URL 编码中的应用实例 对于路径变量或者其他可能包含特殊字符的数据项来说,直接使用上述简单的方法可能会引起问题。这时应该考虑使用专门设计用于 URI/URL 安全性的编码机制——URLEncoder: ```java import java.net.URLEncoder; public class EncoderExample { public static void main(String[] args){ String pathVariable = "path with spaces and special chars!"; try{ String encodedPathVar = URLEncoder.encode(pathVariable,"UTF-8"); System.out.println(encodedPathVar); }catch(Exception ex){ ex.printStackTrace(); } } } ``` 该例子展示了如何安全地对含有空白或其他保留字符的内容进行编码以便在网络请求中传递参数[^2]。 #### 注意事项 值得注意的是,并不是所有的整数值都能合法地映射到有效的 Unicode 码位上;因此,在尝试解析由其他数据类型(如 protobuf 协议缓冲区内的 int 值)组成的二进制流作为 UTF-8 文本之前,应当先确认其确实代表了一串有效的 UTF-8 编码信息[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值