網站首頁 編程語言 正文
Unicode是計算機科學領域里的一項業界標準,包括字符集、編碼方案等。Unicode 是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。
在表示一個Unicode的字符時,通常會用“U+”然后緊接著一組十六進制的數字來表示這一個字符。在 基本多文種平面里的所有字符,要用四位十六進制數;在零號平面以外的字符則需要使用五位或六位十六進制數了。
string str = @"\u0005 \u0002\U00f3 \U +e9\u00e9";
string newStr = UnicodeDecode(str);
Console.WriteLine(newStr);
Console.WriteLine();
newStr = ToUnicode("0 - * @ , 。 ? 真的 繁體字");
Console.WriteLine(newStr);
Console.WriteLine();
正常字符轉換為unicode
/// <summary>
/// 對正常的字符串轉換為 Unicode 的字符串
/// </summary>
/// <param name="normalStr">正常的字符串</param>
/// <param name="isIgnoreSpace">是否忽略空格符;默認 true 空格符不轉換;false 空格符要轉換</param>
/// <param name="isUpperCaseU">是否大寫U字母 ‘\U';默認 false ‘\u'</param>
/// <returns></returns>
public string ToUnicode(this string normalStr, bool isIgnoreSpace = true, bool isUpperCaseU = false)
{
if (string.IsNullOrEmpty(normalStr))
{
return string.Empty;
}
StringBuilder strResult = new StringBuilder();
void func(int index)
{
if (isUpperCaseU)
{
strResult.Append("\\U");
}
else
{
strResult.Append("\\u");
}
strResult.Append(((int)normalStr[index]).ToString("x").PadLeft(4, '0'));
}
for (int i = 0; i < normalStr.Length; i++)
{
if (isIgnoreSpace)
{
if (normalStr[i] == ' ')
{
strResult.Append(" ");
}
else
{
func(i);
}
}
else
{
func(i);
}
}
return strResult.ToString();
}
解碼
/// <summary>
/// 對 Unicode 的字符串解碼
/// </summary>
/// <param name="unicodeStr">Unicode 字符串</param>
/// <returns></returns>
public string UnicodeDecode(string unicodeStr)
{
if (string.IsNullOrWhiteSpace(unicodeStr) || (!unicodeStr.Contains("\\u") && !unicodeStr.Contains("\\U")))
{
return unicodeStr;
}
string newStr = Regex.Replace(unicodeStr, @"\\[uU](.{4})", (m) =>
{
string unicode = m.Groups[1].Value;
if (int.TryParse(unicode, System.Globalization.NumberStyles.HexNumber, null, out int temp))
{
return ((char)temp).ToString();
}
else
{
return m.Groups[0].Value;
}
}, RegexOptions.Singleline);
return newStr;
}
原文鏈接:https://blog.csdn.net/qq_39569480/article/details/125082358
相關推薦
- 2022-06-10 C語言?推理證明帶環鏈表詳細過程_C 語言
- 2022-07-26 注冊bean有多少種方式
- 2022-07-30 react中的事件處理
- 2022-07-04 python實現PyEMD經驗模態分解殘差量分析_python
- 2022-08-22 pytorch深度神經網絡入門準備自己的圖片數據_python
- 2022-03-16 ASP.NET?Core開發Docker部署_基礎應用
- 2022-02-18 微信小程序----------父組件調用子組件的方法
- 2022-09-09 python實現0到1之間的隨機數方式_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支