【 C# 字符转换为 Unicode 编码】

news/2025/2/27 0:15:30

在 C# 中,将字符转换为 Unicode 编码(即字符的 Unicode 码点)非常简单。每个字符在 C# 中都是一个 char 类型,而 char 类型本质上是一个 16 位的 Unicode 字符。你可以通过以下方法将字符转换为 Unicode 编码:


1. 使用隐式转换

char 类型可以直接隐式转换为 int 类型,获取其 Unicode 码点。

示例代码:
using System;

class Program
{
    static void Main()
    {
        char character = 'A'; // 字符
        int unicodeValue = character; // 隐式转换为 Unicode 码点

        Console.WriteLine($"字符: {character}, Unicode 值: {unicodeValue}");
        // 输出: 字符: A, Unicode 值: 65
    }
}

2. 使用 Convert.ToInt32

你也可以使用 Convert.ToInt32 方法将 char 转换为 int,获取其 Unicode 码点。

示例代码:
using System;

class Program
{
    static void Main()
    {
        char character = '你'; // 中文字符
        int unicodeValue = Convert.ToInt32(character); // 转换为 Unicode 码点

        Console.WriteLine($"字符: {character}, Unicode 值: {unicodeValue}");
        // 输出: 字符: 你, Unicode 值: 20320
    }
}

3. 将字符串中的每个字符转换为 Unicode 编码

如果需要将字符串中的每个字符转换为 Unicode 编码,可以遍历字符串并获取每个字符的 Unicode 值。

示例代码:
using System;

class Program
{
    static void Main()
    {
        string input = "Hello 你好";
        foreach (char c in input)
        {
            int unicodeValue = c; // 获取字符的 Unicode 值
            Console.WriteLine($"字符: {c}, Unicode 值: {unicodeValue}");
        }
    }
}
输出:
字符: H, Unicode 值: 72
字符: e, Unicode 值: 101
字符: l, Unicode 值: 108
字符: l, Unicode 值: 108
字符: o, Unicode 值: 111
字符:  , Unicode 值: 32
字符: 你, Unicode 值: 20320
字符: 好, Unicode 值: 22909

4. 处理代理对(Surrogate Pair)

对于某些 Unicode 字符(如表情符号),它们可能由两个 char 值(称为代理对)表示。可以使用 char.IsSurrogatePairchar.ConvertToUtf32 来处理。

示例代码:
using System;

class Program
{
    static void Main()
    {
        string input = "😊"; // 表情符号
        for (int i = 0; i < input.Length; i++)
        {
            if (char.IsSurrogatePair(input, i))
            {
                // 处理代理对
                int codePoint = char.ConvertToUtf32(input, i);
                Console.WriteLine($"字符: {input.Substring(i, 2)}, Unicode 值: {codePoint}");
                i++; // 跳过下一个 char
            }
            else
            {
                // 处理普通字符
                int unicodeValue = input[i];
                Console.WriteLine($"字符: {input[i]}, Unicode 值: {unicodeValue}");
            }
        }
    }
}
输出:
字符: 😊, Unicode 值: 128522

5. 将 Unicode 值格式化为 \uHHHH\UHHHHHHHH

如果需要将 Unicode 值格式化为 \uHHHH(4 位十六进制)或 \UHHHHHHHH(8 位十六进制),可以使用 ToString("X4")ToString("X8")

示例代码:
using System;

class Program
{
    static void Main()
    {
        char character = 'A'; // 字符
        int unicodeValue = character; // 获取 Unicode 值
        string unicodeEscape = $"\\u{unicodeValue:X4}"; // 格式化为 \uHHHH

        Console.WriteLine($"字符: {character}, Unicode 转义字符: {unicodeEscape}");
        // 输出: 字符: A, Unicode 转义字符: \u0041

        string emoji = "😊"; // 表情符号
        int emojiCodePoint = char.ConvertToUtf32(emoji, 0); // 获取 Unicode 码点
        string emojiEscape = $"\\U{emojiCodePoint:X8}"; // 格式化为 \UHHHHHHHH

        Console.WriteLine($"字符: {emoji}, Unicode 转义字符: {emojiEscape}");
        // 输出: 字符: 😊, Unicode 转义字符: \U0001F60A
    }
}

6. 总结

  • 使用隐式转换或 Convert.ToInt32 将字符转换为 Unicode 码点。
  • 遍历字符串可以获取每个字符的 Unicode 值。
  • 对于代理对字符,使用 char.ConvertToUtf32 获取完整的 Unicode 码点。
  • 使用 ToString("X4")ToString("X8") 将 Unicode 值格式化为 \uHHHH\UHHHHHHHH

通过这些方法,你可以在 C# 中轻松地将字符转换为 Unicode 编码。


http://www.niftyadmin.cn/n/5869306.html

相关文章

JSPSSM526SpringBoot 教师人事档案管理系统功能说明

JSPSSM526SpringBoot 教师人事档案管理系统功能说明 JSPSSM526SpringBoot教师人事档案管理系统是一款专为教育机构设计的高效、安全、易用的信息化管理系统。该系统基于Spring Boot框架开发&#xff0c;结合JSP&#xff08;JavaServer Pages&#xff09;技术&#xff0c;旨在帮…

STM32+ESP8266局域网通信

若该文为原创文章&#xff0c;转载请注明原文出处。 此篇记录如何使用APP&#xff0c;在局域网内和STM32通信&#xff0c;并远程控制。 一、原理 STM32通过串口AT指令控制ESP8266(ESP-01S), ESP8266会产生一个热点&#xff0c;并创建了TCP服务&#xff0c;手机连接热点&#…

Solidity 开发环境

Solidity 开发环境 Solidity编辑器&#xff1a;Solidity编辑器是⼀种专⻔⽤于编写和编辑Solidity代码的编辑器。常⽤的Solidity编辑器包括 Visual Studio Code、Atom和Sublime Text。以太坊开发环境&#xff1a;以太坊开发环境&#xff08;Ethereum Development Environment&a…

PHP Zip 文件处理指南

PHP Zip 文件处理指南 引言 ZIP文件是一种流行的压缩格式&#xff0c;广泛用于文件压缩和归档。PHP作为一门强大的服务器端脚本语言&#xff0c;提供了丰富的类和方法来处理ZIP文件。本文将详细介绍PHP中ZIP文件的处理方法&#xff0c;包括创建、添加文件、提取文件以及压缩和…

双重因子认证:守护数字安全的“双保险”

在数字化时代&#xff0c;网络安全问题日益凸显&#xff0c;个人信息和资产面临着诸多威胁。为了应对这些挑战&#xff0c;双重因子认证&#xff08;Two-Factor Authentication&#xff0c;简称2FA&#xff09;应运而生&#xff0c;成为一种重要的安全防护手段。 一、什么是双…

使用 Conda 管理 R 语言

1. 引言 在数据科学和统计分析领域&#xff0c;R 语言 是一门强大的编程语言&#xff0c;广泛用于数据可视化、统计建模和机器学习等任务。与 Python 相似&#xff0c;R 也有大量的开源包和库支持其功能。然而&#xff0c;在项目中使用 R 语言时&#xff0c;如何高效管理其环境…

【DeepSeek】【GPT-Academic】:DeepSeek集成到GPT-Academic(官方+第三方)

目录 1 官方deepseek 1.1 拉取学术GPT项目 1.2 安装依赖 1.3 修改配置文件中的DEEPSEEK_API_KEY 2 第三方API 2.1 修改DEEPSEEK_API_KEY 2.2 修改CUSTOM_API_KEY_PATTERM 2.3 地址重定向 2.4 修改模型参数 2.5 成功调用 2.6 尝试添加一个deepseek-r1参数 3 使用千帆…

倚光科技:助力玻璃非球面的打样与小批量生产

在现代光学和精密制造领域&#xff0c;非球面光学元件凭借其卓越的光学性能&#xff0c;已成为推动高端科技发展的核心组件。相比于传统的球面透镜&#xff0c;非球面透镜能够显著减少光学系统中的像差和畸变&#xff0c;大幅提升成像质量、系统紧凑性和能量利用率。因此&#…