/**
* Unicode编码规则:Unicode码对每一个字符用4位16进制数表示。
* 具体规则是:将一个字符(char)的高8位与低8位分别取出,转化为16进制数,
* 如果转化的16进制数的长度不足2位,则在高位补0,然后将高、低8位转成的16进制字符串拼接起来并在前面补上"\\u" 即可。
*
* @param str
* @return
*/
public static String convertStrToUnicode(String str) {
if (str == null || str.length() == 0) {
return "";
}
StringBuffer sb = new StringBuffer(1000);
// 临时变量
int hexNumber;
char c;
String hexStr;
for (int i = 0; i < str.length(); i++) {
// 加上\\u前缀
sb.append("\\u");
// 取出第i为的char字符
c = str.charAt(i);
// 取出高8位
hexNumber = (c >>> 8);
hexStr = Integer.toHexString(hexNumber);
if (hexStr.length() == 1)
sb.append("0");
sb.append(hexStr);
// 取出低8位
hexNumber = (c & 0xFF);
hexStr = Integer.toHexString(hexNumber);
if (hexStr.length() == 1)
sb.append("0");
sb.append(hexStr);
}
return sb.toString();
}
/**
* 将Unicode编码的字符串转换为String
*
* @param unicodeStr
* @return
*/
public static String convertUnicodeToStr(String unicodeStr) {
if (unicodeStr == null || unicodeStr.length() == 0) {
return "";
}
String unicodePrefix = "\\u";
String tempStr;
String tempHexStr;
StringBuffer sb = new StringBuffer(1000);
while (unicodeStr.contains(unicodePrefix)) {
// 获取第一次出现\\u的index
int firstIndex = unicodeStr.indexOf(unicodePrefix);
// 获取第二次出现\\u的index
int secondIndex = unicodeStr.indexOf(unicodePrefix, firstIndex + 2);
// 将第一出现与第二次出现中间的部分,截取下来
if (secondIndex == -1) {
tempStr = unicodeStr.substring(firstIndex);
} else {
tempStr = unicodeStr.substring(firstIndex, secondIndex);
}
tempHexStr = tempStr.substring(tempStr.indexOf(unicodePrefix) + 2);
if (tempHexStr.length() == 4) {
sb.append((char) Integer.parseInt(tempHexStr, 16));
}
// 将第二次出现以后的部分截取下来
if (secondIndex == -1) {
unicodeStr = "";
} else {
unicodeStr = unicodeStr.substring(secondIndex);
}
}
return sb.toString();
}
分享到:
相关推荐
### C# 字串与 Unicode 互相转换方法 在软件开发过程中,经常需要处理不同编码格式的数据,其中 Unicode 是一种常见的字符编码方式,它为每个字符分配一个唯一的数字(即码点),支持世界上几乎所有的书写系统。C# ...
如果处理的是Unicode字符串,如UTF-16编码的`UnicodeString`(Delphi的默认字符串类型),则转换过程会有所不同。例如,你可以直接将Unicode字符串转换为字节数组,不考虑字符编码: ```delphi function ...
utf-8、ANSI、Unicode相互转化c++实现 std::string ConverANSI2UTF8(const std::string & str); std::wstring ConverANSI2Unicode(const std::string str); std::wstring ConverUTF82Unicode(const std::string str)...
Unicode与汉字的转换工具有多种实现方式,这里提到的是一个基于Java开发的工具,使用了Eclipse作为集成开发环境,并且兼容JDK7。Eclipse是一个广泛使用的开源IDE,尤其适合Java开发者,提供了丰富的代码编辑、调试和...
了解汉字与 Unicode 的相互转换对于进行跨平台、跨语言的文本处理至关重要。 Unicode 对汉字的编码主要采用两种形式:基本多文种平面(BMP)内的 UTF-16 编码和补充字符平面(SCP)的代理对编码。对于 BMP 内的汉字...
在计算机科学领域,字符编码是数据处理和存储中不可或缺的一部分,UTF-8和字符串(string)之间的转换是常见的操作。UTF-8是一种广泛使用的Unicode字符编码,它可以表示Unicode字符集中的所有字符,而字符串则通常指的...
本知识点将详细介绍如何在Java中实现字符串和Unicode字符的相互转换,并通过代码示例进行深入解析。 首先,需要明确Unicode是计算机上使用的一种字符编码方式,它为世界上几乎所有已知的文字符号都提供了唯一性的...
Unicode和中文的相互转换——VS2019的C++控制台项目(x64\x86\Debug\Release已编译) 1. bool ChineseToUnicode(CString cstr, string & str); 望断秋高和待雪初平__ChineseToUnicode:\u671b\u65ad\u79cb\u9ad8\u...
本文将深入探讨汉字与Unicode在C#中的相互转化,并提供相关的代码示例。 首先,我们来理解一下汉字与Unicode的关系。汉字是中文的字符,其在计算机中存储通常有两种主要方式:GBK(一种针对简体中文的扩展GBK编码)...
本文将深入探讨如何在Java中将String字符串与Unicode字符进行相互转换。 首先,了解Java中的String类。String是Java中的一个不可变对象,用于表示一系列的字符。每个字符在内存中都有其对应的Unicode编码。Java的...
本工具提供的源码应该包含了这些功能,能够方便地进行16进制Unicode字符与汉字之间的相互转换。通过学习和理解这段代码,开发者不仅可以掌握这种转换技巧,还能进一步了解C#处理字符串和字符编码的机制。无论是对...
string unicodeString = Encoding.Unicode.GetString(utf16Bytes); // Unicode转UTF-8 byte[] utf16ToUtf8Bytes = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, utf16Bytes); string utf8FromUnicode = ...
CString string_to_CString_unicode(std::string str) CString string_to_CString_unicode_Ex(std::string& str) CString string_to_CString_ansi(std::string str) CString string_to_CString_ansi_Ex(std::string&...
在实际应用中,该工具可能还包含了其他功能,如读取和保存Unicode文件,或者进行Unicode与非Unicode编码之间的相互转换。在VB6.0中,这通常涉及对文件的I/O操作,使用`Open`、`Write`和`Close`语句来读写文件,并且...
本文将深入探讨如何在Java中实现中文与Unicode之间的相互转换,这对于跨平台、国际化应用程序的开发至关重要。 #### 二、Unicode基础知识 Unicode是一种字符编码标准,旨在为每种语言中的每个字符分配唯一的数字...
在Java编程中,String对象和Byte...总之,Java中的String与Byte类型的转换是编程中不可或缺的部分,尤其在网络编程中,理解这两种类型之间的转换方式及其在网络数据交换中的作用,对于编写高效、可靠的程序至关重要。
### C#字符串与Unicode互相转换实战案例分析 在软件开发过程中,字符编码处理是一项非常重要的技术环节。尤其是在国际化应用中,正确地处理不同语言的文字变得尤为关键。C#作为一种广泛使用的编程语言,提供了丰富...
字符串常量前加上`_T`或`TEXT`宏,可以自动转换为宽字符或多字节字符串,如`L"string"`或`_T("string")`。 对于需要同时处理UNICODE和MBCS的情况,Windows API提供了`WideCharToMultiByte`和`MultiByteToWideChar`...