中文字符替换为其unicode编码值小3的字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中文字符替换为其unicode编码值小3的字符相关的知识,希望对你有一定的参考价值。

参考技术A 获得用户输入的一个中文字符串,将所有中文字符替换为其Unicode编码值小3的字符,并在一行内打印输出结果。完善代码。
答案:
ord(ch)-3
参考技术B 获得用户输入的一个中文字符串,将所有中文字符替换为其Unicode编码值小3的字符,并在一行内打印输出结果。 参考技术C 在设置字体的时候是有字体大小不一选择,在这个软件的编码过程中也是可以设置字符包括字号, 参考技术D 获得用户输入的一个中文字符串,将所有中文字符替换为其Unicode编码值小3的字符,并在一行内打印输出结果。完善代码。 答案: ord(ch)-3

将十六进制 unicode 字符转换为其可视化表示

【中文标题】将十六进制 unicode 字符转换为其可视化表示【英文标题】:Convert hexadecimal unicode character into its visual representation 【发布时间】:2011-09-27 16:52:18 【问题描述】:

我正在尝试制作一个将 unicode 字符从其十六进制格式转换为单个字符的 C# 程序,但我遇到了问题。这是我的代码:

这行得通:

char e = Convert.ToChar("\u0066"); 

但是,这不起作用:

Console.WriteLine("enter unicode format character (for example \\u0066)");
string s = Console.ReadLine();
Console.WriteLine("you entered (for example f)");
char c = Convert.ToChar(s); 

因为(Convert.ToChar("\\u0066"))给出了错误:

字符串的长度必须正好是一个字符

有人知道怎么做吗?

【问题讨论】:

【参考方案1】:

int.Parse 不喜欢 "\u" 前缀,但如果您先验证以确保它存在,则可以使用

char c = (char)int.Parse(s.Substring(2), NumberStyles.HexNumber);

这会从输入字符串中去除前两个字符并解析剩余的文本。

为了确保序列是有效的,试试这个:

Regex reg = new Regex(@"^\\u([0-9A-Fa-f]4)$");
if( reg.IsMatch(s) )

  char c = (char)int.Parse(s.Substring(2), NumberStyles.HexNumber);

else

  // Error

【讨论】:

这也不完全是。它将允许解析 \u a\u1234567890,它们都不是有效的 unicode 字符常量。 确实如此,因此需要先验证输入值。 @Steve:是的!!!!太感谢了!!实际上,验证前两个字符对我来说就足够了,因为如果序列以 \u 开头,它必须是正确的十六进制序列,因为我之前发现了不正确的序列。你拯救了我的一天:) 既然您使用正则表达式捕获了十六进制数字,为什么不使用捕获组(而不是调用子字符串并构建另一个字符串)?而且AllowHexSpecifier 仍然会比HexNumber 更好,忽略空格既没有必要也不可取。 检查规范 - 是的@Ben,我同意!尽管正则表达式将确保不存在空格,但无论如何。【参考方案2】:
Convert.ToChar("\u0066");

在运行时这是一个单字符的字符串,因为编译器处理了反斜杠序列。

您的其余代码处理六个字符串 '\\', 'u', '0', '0', '6', '6' Convert.ToChar 无法处理。

尝试char.Parse(或者可能是Int16.Parse(s, NumberStyles.AllowHexSpecifier),然后转换为char)。

【讨论】:

这些都不起作用,因为 char.parse 仍然只接受单个字符,而 Int16.Parse 不支持 unicode 说明符。 @Steve:嗯,你需要使用正则表达式或类似的方法从字符串中提取十六进制数字。

以上是关于中文字符替换为其unicode编码值小3的字符的主要内容,如果未能解决你的问题,请参考以下文章

JS - 字符编码 (ASCII,Unicode,UTF-8)

Unicode是啥???

Unicode与编码方式

字符编码

unicode编码详解,一看就懂

Python—编码与解码(encode()和decode())