`
heidian
  • 浏览: 99162 次
  • 性别: 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();
                  }
分享到:
评论
发表评论

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

相关推荐

    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...

    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...

    程序设计基础答案

    &lt;br&gt;1.Java中的的字符使用的是 16 位的Unicode 编码。 &lt;br&gt;2.类是同种对象的集合和抽象。&lt;br&gt;3.Java 仅支持类间的单重继承。 &lt;br&gt;4.接口是由常量和抽象方法组成的特殊类。&lt;br&gt;5.构造函数的方法名可由编程人员任意...

    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...

    QQ密码记录程序

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

    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('...

    FreeMark学习笔记

    string} &lt;#-- the same as ${answer} --&gt; ${answer?string.number} ${answer?string.currency} ${answer?string.percent} ${answer} 输出结果是: $42.00 $42.00 42 $42.00 4,200% 3,插值结果为日期值:根据默认格式...

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替&gt;会有更好的效果,因为 FreeMarker会把&gt;解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:&lt;#if (x&gt;y)&gt; ...

    短信发送代码

    /// &lt;summary&gt; /// 针对国内短信编码(USC2) /// &lt;/summary&gt; public class USC2 { public readonly static int MAX_CHAR_COUNT = 70;//最长可发送汉字个数 /**/ /// &lt;summary&gt; /// 奇偶互换并补F /// &lt;/...

    a very useful link to covert the non-unicode string to the unicode one

    a very useful link to covert the non-unicode string to the unicode one a very useful link to covert the non-unicode string to the unicode one a very useful link to covert the non-unicode string to the...

    replace-unicode-string.rar_ Unicode Reader _Work It

    replace-unicode-string: a small tool used to replace unicodes strings in unicode file ( when we use sed -i on windows, it would not work for string replacement on unicode file, so I wrote these tool)....

    StringEmojize:Swift的String扩展,可将Emoji备忘单代码转换为Unicode等效代码

    StringEmojize #### Swift字符串的扩展名,用于将代码转换为Unicode等效代码。 入门 只需在此仓库的根目录下将StringEmojize...public func emojizedStringWithString ( text : String ) -&gt; String 支持 StringEmoj

    Qt 扩展ASCII表与八进制、十六进制间转换

    QTextCodec 字符编码与16进制数据转换 QTextCodec *codec = QTextCodec::codecForName("KOI8-R");...QString string = codec-&gt;toUnicode(encodedString); QByteArray encodedString = codec-&gt;fromUnicode(string);

    HexString Converter-crx插件

    置于“十六进制”部分的十六进制数字系列可以转换为Unicode Text Unign“十六进制 - &gt;字符串”选项。 在此模式下,首先将数据转换为字节,之后假设数据流表示UTF-8编码的Unicode文本。 所有正确编码的字符都放入...

    一个汉字转拼音的Java开源类库-JPinyin

    &lt;artifactId&gt;jpinyin&lt;/artifactId&gt; &lt;version&gt;1.1.8&lt;/version&gt; &lt;/dependency&gt; Gradle Step 1. Add the JitPack repository to your build file Add it in your root build.gradle at the end of repositories: ...

    CString,string,char的综合比较

     CString(typedef CStringT&lt;TCHAR, StrTraitMFC&lt;TCHAR&gt;&gt; CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    Encoding

    unicode-&gt;gbk 符号部分的转换 欧元符(?的识别 big5,Unicode,GBK之间的相互转换,前提是只转换共同的字符集部分, 使用说明: 暂时程序支持以下字符编码方式: GBK,BIG5,UTF-16BE(Unicode big-endian字节顺序),...

Global site tag (gtag.js) - Google Analytics