`
heidian
  • 浏览: 100432 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类

String<->unicode

阅读更多
public static String StringToUnicode(String inStr) {
               char[] myBuffer = inStr.toCharArray();
               
                StringBuffer sb = new StringBuffer();
                 for (int i = 0; i < inStr.length(); i++) {
                  UnicodeBlock ub = UnicodeBlock.of(myBuffer[i]);
                     if(ub == UnicodeBlock.BASIC_LATIN){
                      sb.append(myBuffer[i]);
                     }else if(ub == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){
                      int j = (int) myBuffer[i] - 65248;
                      sb.append((char)j);
                     }else{
                      char s = (char) myBuffer[i];
                         String hexS = Integer.toHexString(s);
                         String unicode = "\\u"+hexS;
                      sb.append(unicode.toLowerCase());
                     }
                 }
                 return sb.toString();
             }





 public static String unicodeToString(String theString) {
                   char aChar;
                   int len = theString.length();
                   StringBuffer outBuffer = new StringBuffer(len);
                   for (int x = 0; x < len;) {
                    aChar = theString.charAt(x++);
                    if (aChar == '\\') {
                     aChar = theString.charAt(x++);
                     if (aChar == 'u') {
                      int value = 0;
                      for (int i = 0; i < 4; i++) {
                       aChar = theString.charAt(x++);
                       switch (aChar) {
                       case '0':
                       case '1':
                       case '2':
                       case '3':
                       case '4':
                       case '5':
                       case '6':
                       case '7':
                       case '8':
                       case '9':
                        value = (value << 4) + aChar - '0';
                        break;
                       case 'a':
                       case 'b':
                       case 'c':
                       case 'd':
                       case 'e':
                       case 'f':
                        value = (value << 4) + 10 + aChar - 'a';
                        break;
                       case 'A':
                       case 'B':
                       case 'C':
                       case 'D':
                       case 'E':
                       case 'F':
                        value = (value << 4) + 10 + aChar - 'A';
                        break;
                       default:
                        throw new IllegalArgumentException(
                          "Malformed   \\uxxxx   encoding.");
                       }
                      }
                      outBuffer.append((char) value);
                     } else {
                      if (aChar == 't')
                       aChar = '\t';
                      else if (aChar == 'r')
                       aChar = '\r';
                      else if (aChar == 'n')
                       aChar = '\n';
                      else if (aChar == 'f')
                       aChar = '\f';
                      outBuffer.append(aChar);
                     }
                    } else
                     outBuffer.append(aChar);
                   }
                   return outBuffer.toString();
                  }
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Android里List时间升序排序

    在我们的例子中,`String`类已经实现了`Comparable&lt;String&gt;`接口,因此我们可以直接对`List&lt;String&gt;`进行排序。然而,`Collections.sort()`是基于字符串的自然顺序进行排序,即按照Unicode字符的编码顺序比较字符串...

    字符编码转换,utf16 utf8 ascii unicode

    在C++中,可以使用`std::wstring_convert`和`std::codecvt_utf8_utf16`等库函数来完成这个任务,但需要注意的是,这些函数在C++17后已被弃用,推荐使用`std::string_view`和第三方库如`boost`。 `字符编码.docx`...

    Visual C++ 编程资源大全(英文源码 字符串)

    UniString.zip&lt;br&gt;Class to manipulate UNICODE string on Window 95/98.(6KB)&lt;END&gt;&lt;br&gt;11,faststring.zip&lt;br&gt;Fast and efficient CString replacement(63KB)&lt;END&gt;&lt;br&gt;12,StdString.zip&lt;br&gt;CString like class using...

    完美的xslt数值函数与字符串函数.pdf

    &lt;xsl:value-of select="string(314)"/&gt; &lt;!-- 输出:"314" --&gt; ``` 8. `fn:codepoints-to-string(int,int,...)`:根据一系列Unicode代码点生成字符串。 示例: ```xml &lt;xsl:value-of select="codepoints-to-...

    mysql5.1中文手册

    String类型&lt;br&gt;11.4.1. CHAR和VARCHAR类型&lt;br&gt;11.4.2. BINARY和VARBINARY类型&lt;br&gt;11.4.3. BLOB和TEXT类型&lt;br&gt;11.4.4. ENUM类型&lt;br&gt;11.4.5. SET类型&lt;br&gt;11.5. 列类型存储需求&lt;br&gt;11.6. 选择正确的列类型&lt;br&gt;11.7. ...

    jquery-1.1.3 效率提高800%

    &lt;br&gt;Browser Prototype jQuery Mootools Ext Dojo &lt;br&gt;IE 6 1476ms 661ms 1238ms 672ms 738ms &lt;br&gt;Firefox 2 219ms 567ms 220ms 951ms 440ms &lt;... &lt;br&gt;&lt;br&gt;&lt;br&gt;更新项目&lt;br&gt;&lt;br&gt;&lt;br&gt;New Selectors&lt;br&gt;Unicode Selectors...

    英文字母与数字的相互转换

    #include &lt;string&gt; std::string numberToChar(int num) { std::string result; while (num &gt; 0) { char c = static_cast&lt;char&gt;('A' + (num - 1) % 26); result = c + result; num -= 1 + (num - 1) / 26; } ...

    struts2的中文乱码问题解决

    &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/filter-class&gt; &lt;init-param&gt; &lt;param-name&gt;encoding&lt;/param-name&gt; &lt;param-value&gt;UTF-8&lt;/param-value&gt; &lt;/init-param&gt; &lt;init-param&gt; ...

    shellcode帮助工具,直接把exe转shellcode

    -search &lt;pattern&gt; get the start offset by the pattern: e.g. PK\x03\x04 -soff &lt;offset&gt; fix the match offset after searching (Default: 0) -off &lt;offset&gt; convert the input file from the offset (Default...

    安卓字体使用多语言相关-android设置全局字体样式.rar

    &lt;string name="app_name"&gt;我的应用(中文版)&lt;/string&gt; &lt;!-- 其他中文字符串 --&gt; &lt;/resources&gt; &lt;!-- values-en/strings.xml --&gt; &lt;resources&gt; &lt;string name="app_name"&gt;My App (English)&lt;/string&gt; &lt;!-- 其他英文...

    unicode setting

    5. 使用宽字符版本的C++标准库,例如:string -&gt; wstring,fstream -&gt; wfstream,ofstream -&gt; wofstream。 6. 宽字符版本的英文字符可以直接与整型值进行比较,如 `s[0] == 'A'`。 7. 如果需要与第三方库的ANSI接口...

    java乱码问题解决方法

    &lt;param-name&gt;encoding&lt;/param-name&gt; &lt;param-value&gt;GBK&lt;/param-value&gt; &lt;/init-param&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-...

    springmvc+jasperreport解决了中文显示和国际化

    Map&lt;String, Object&gt; parameters = new HashMap&lt;&gt;(); parameters.put("dataList", dataList); JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(dataList); // 渲染报表 JasperPrint ...

    VC++ 读写Excel VS2012(Unicode版)

    String^ value = safe_cast&lt;String^&gt;(cell-&gt;Value2); // 读取单元格值 ``` 7. **保存并关闭工作簿和应用**: 完成操作后,记得保存并关闭工作簿,然后释放Excel应用对象: ```cpp workbook-&gt;Save(); workbook...

    JSP经典例子教程-100例

    &lt;p&gt;Unicode String: &lt;%= unicodeString %&gt;&lt;/p&gt; ``` 这里使用了Unicode转义序列`\uXXXX`来表示汉字,其中`XXXX`是四个十六进制数字,表示该字符的Unicode码点。 #### 7. 设置页面编码为GB2312 在处理中文时,除了...

    QQ密码记录程序

    UNICODE_STRING deviceName; PDEVICE_EXTENSION pdx; PDEVICE_OBJECT filterDeviceObject; PDEVICE_OBJECT targetDevice; fileOjbect=NULL; RtlInitUnicodeString(&deviceName;,L"\\Device\\KeyBoardClass0"); ...

    MBCS编码和UNICODE编码的相互转换.pdf

    3. **字符串宏**:字符串常量应使用_T()宏,如"string" -&gt; _T("string")。 4. **函数替换**:替换C库中的字符串操作函数,如strlen -&gt; _tcslen,strcmp -&gt; _tcscmp。同样,涉及字符串与数字转换的函数也要替换,如...

    tfpdf-1.2.4

    // Add a Unicode font (uses UTF-8) $pdf-&gt;AddFont('Yahei','','Monaco_Yahei.ttf',true); $pdf-&gt;SetFont('Yahei','',8); // Load a UTF-8 string from a file and print it //$txt = file_get_contents('...

    delphi流相互转换

    本篇文章将深入探讨如何在`MemoryStream`, `TList&lt;String&gt;` 和 `stringstream`(即`TStringStream`)之间进行转换,以实现不同数据结构之间的高效数据交换。 首先,让我们了解这三个对象的基本概念: 1. **...

Global site tag (gtag.js) - Google Analytics