unicode 与汉字转码

今天写react页面,需要请求json数据,但是请求成功后,渲染到页面的汉字都成了乱码。

解决办法:需要将汉字转成unicode码

http://tool.chinaz.com/tools/unicode.aspx

去这个网站转换即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Java 中,可以使用 `java.nio.charset.Charset` 类来实现 Unicode 到 GBK 的转码。 首先,需要使用 `Charset.forName()` 方法来获取 GBK 编码的 `Charset` 对象: ``` Charset gbkCharset = Charset.forName("GBK"); ``` 然后,使用这个 `Charset` 对象来创建一个 `CharsetEncoder` 对象,用于将 Unicode 编码的字符串转换为 GBK 编码: ``` CharsetEncoder encoder = gbkCharset.newEncoder(); ``` 最后,使用 `encode()` 方法将 Unicode 编码的字符串转换为 GBK 编码: ``` String unicodeString = "Hello, 世界"; ByteBuffer byteBuffer = encoder.encode(CharBuffer.wrap(unicodeString)); ``` 这样,就可以得到一个包含 GBK 编码字节的 `ByteBuffer` 对象了。你可以使用这个对象来进行后续的操作,比如写入文件或者发送给其他程序。 示例代码如下: ```java import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; public class UnicodeToGBK { public static void main(String[] args) throws Exception { // 获取 GBK 编码的 Charset 对象 Charset gbkCharset = Charset.forName("GBK"); // 创建 CharsetEncoder 对象 CharsetEncoder encoder = gbkCharset.newEncoder(); // 要转换的 Unicode 编码的字符串 String unicodeString = "Hello, 世界"; // 将 Unicode 编码的字符串转换为 GBK 编码 ByteBuffer byteBuffer = encoder.en ### 回答2: 在Java中,可以使用Java编码库提供的字符编码转换类`Charset`和字节编码类`CharsetEncoder`来实现Unicode到GBK的转码。 首先,我们需要将Unicode字符串编码为字节序列。可以使用`Charset`类的静态方法`forName`来获取指定编码方式的实例,如`Charset.forName("Unicode")`获取Unicode编码的实例。 然后,我们可以调用`CharsetEncoder`类的`encode`方法将Unicode字符串转换为字节序列。这可以通过创建一个`CharBuffer`实例来完成,将Unicode字符串放入`CharBuffer`中,然后调用`CharsetEncoder`的`encode`方法。最终,我们可以使用`ByteBuffer`类的`array`方法获取到转换后的字节序列。 接下来,我们需要将字节序列转换为GBK编码的字符串。可以使用`Charset.forName("GBK")`获取GBK编码的实例,然后将字节序列放入`ByteBuffer`中,并调用`CharsetDecoder`类的`decode`方法,将字节序列解码为GBK编码的字符串。 以下是一个示例代码: ```java import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; import java.nio.charset.CharsetDecoder; public class UnicodeToGBKConverter { public static String unicodeToGBK(String unicode) { Charset unicodeCharset = Charset.forName("Unicode"); CharsetEncoder encoder = unicodeCharset.newEncoder(); Charset gbkCharset = Charset.forName("GBK"); CharsetDecoder decoder = gbkCharset.newDecoder(); CharBuffer unicodeBuffer = CharBuffer.wrap(unicode); ByteBuffer unicodeBytes; try { unicodeBytes = encoder.encode(unicodeBuffer); } catch (Exception e) { e.printStackTrace(); return null; } ByteBuffer gbkBytes = ByteBuffer.allocate(unicodeBytes.limit()); try { gbkBytes.put(unicodeBytes.array()); gbkBytes.rewind(); } catch (Exception e) { e.printStackTrace(); return null; } String gbkString; try { gbkString = decoder.decode(gbkBytes).toString(); } catch (Exception e) { e.printStackTrace(); return null; } return gbkString; } public static void main(String[] args) { String unicodeString = "你好"; String gbkString = unicodeToGBK(unicodeString); System.out.println("GBK string: " + gbkString); } } ``` 以上代码将输出`GBK string: 浣犲ソ`,即将Unicode编码的字符串"你好"转码为GBK编码的字符串"浣犲ソ"。 ### 回答3: Java中提供了 `java.nio.charset.Charset` 类来进行字符编码转换。下面是一个将中文Unicode编码转为GBK编码的示例程序: ```java import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; public class UnicodeToGBKConverter { public static String convert(String unicodeString) { // 将Unicode字符串转为字节数组 byte[] unicodeBytes = unicodeString.getBytes(StandardCharsets.UTF_16BE); // 将字节数组从Unicode编码转为GBK编码 byte[] gbkBytes = new String(unicodeBytes, StandardCharsets.UTF_16BE).getBytes(Charset.forName("GBK")); // 将字节数组转为GBK编码的字符串 return new String(gbkBytes, Charset.forName("GBK")); } public static void main(String[] args) { String unicodeString = "\u4E2D\u6587"; // 中文Unicode编码字符串 String gbkString = convert(unicodeString); System.out.println(gbkString); // 输出: 中文 System.out.println(gbkString.getBytes(Charset.forName("GBK"))); // 输出: [-42, -48, -58, -67] } } ``` 上述示例中,`convert` 方法将输入的Unicode编码字符串转为字节数组,再使用 `GBK` 字符集进行解码转换,最后将字节数组转为GBK编码的字符串输出。 `main` 方法中的 `unicodeString` 是中文Unicode编码字符串,经过转换后输出的 `gbkString` 为对应的GBK编码字符串。同时也可以通过 `getBytes` 方法获取转换后的字节数组。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值