日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汉字和utf编码转换

發(fā)布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汉字和utf编码转换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
package Sambo;public class URLtoUTF8 {//將漢字轉換為編碼public static String toUtf8String(String s) {StringBuffer sb = new StringBuffer();for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (c >= 0 && c <= 255) {sb.append(c);} else {byte[] b;try {b = String.valueOf(c).getBytes("utf-8");} catch (Exception ex) {System.out.println(ex);b = new byte[0];}for (int j = 0; j < b.length; j++) {int k = b[j];if (k < 0)k += 256;sb.append("%" + Integer.toHexString(k).toUpperCase());}}}return sb.toString();}//將編碼轉換為漢字public static String unescape(String s) {StringBuffer sbuf = new StringBuffer();int l = s.length();int ch = -1;int b, sumb = 0;for (int i = 0, more = -1; i < l; i++) {/* Get next byte b from URL segment s */switch (ch = s.charAt(i)) {case '%':ch = s.charAt(++i);int hb = (Character.isDigit((char) ch) ? ch - '0': 10 + Character.toLowerCase((char) ch) - 'a') & 0xF;ch = s.charAt(++i);int lb = (Character.isDigit((char) ch) ? ch - '0': 10 + Character.toLowerCase((char) ch) - 'a') & 0xF;b = (hb << 4) | lb;break;case '+':b = ' ';break;default:b = ch;}/* Decode byte b as UTF-8, sumb collects incomplete chars */if ((b & 0xc0) == 0x80) { // 10xxxxxx (continuation byte)sumb = (sumb << 6) | (b & 0x3f); // Add 6 bits to sumbif (--more == 0)sbuf.append((char) sumb); // Add char to sbuf} else if ((b & 0x80) == 0x00) { // 0xxxxxxx (yields 7 bits)sbuf.append((char) b); // Store in sbuf} else if ((b & 0xe0) == 0xc0) { // 110xxxxx (yields 5 bits)sumb = b & 0x1f;more = 1; // Expect 1 more byte} else if ((b & 0xf0) == 0xe0) { // 1110xxxx (yields 4 bits)sumb = b & 0x0f;more = 2; // Expect 2 more bytes} else if ((b & 0xf8) == 0xf0) { // 11110xxx (yields 3 bits)sumb = b & 0x07;more = 3; // Expect 3 more bytes} else if ((b & 0xfc) == 0xf8) { // 111110xx (yields 2 bits)sumb = b & 0x03;more = 4; // Expect 4 more bytes} else /* if ((b & 0xfe) == 0xfc) */{ // 1111110x (yields 1 bit)sumb = b & 0x01;more = 5; // Expect 5 more bytes }/* We don't test if the UTF-8 encoding is well-formed */}return sbuf.toString();} }

?

轉載于:https://www.cnblogs.com/SangBigYe/p/3224792.html

總結

以上是生活随笔為你收集整理的汉字和utf编码转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。