【发布时间】:2026-02-22 05:00:01
【问题描述】:
问题来了:
在 C# 中,我从旧的 ACCESS 数据库中获取信息。 .NET 在将内容交给我之前将数据库的内容(在此问题中为字符串)转换为 Unicode。
如何将此 Unicode 字符串转换回它的 ASCII 等价物?
编辑
Unicode char 710 确实是 MODIFIER LETTER CIRCUMFLEX ACCENT。这里的问题更精确一点:
-> (Extended) ASCII 字符 ê (Extended ASCII 136) 被插入到数据库中。
-> Access 或 .NET 中的读取组件将其转换为 U+02C6 U+0065
(修饰符字母 CIRCUMFLEX ACCENT + 拉丁文小写字母 E)
-> 我需要(扩展的)ASCII 字符 136。
这是我尝试过的(我现在明白为什么这不起作用......):
string myInput = Convert.ToString(Convert.ToChar(710));
byte[] asBytes = Encoding.ASCII.GetBytes(myInput);
但这不会导致 94 而是一个值为 63 的字节...
这是一个新的尝试,但它仍然不起作用:
byte[] bytes = Encoding.ASCII.GetBytes("ê");
解决方案
感谢csgero 和bzlm 指出正确的方向,我解决了here 的问题。
【问题讨论】:
-
“扩展 ASCII”一词令人困惑。如果您的输入数据确实是 ASCII,则没有 ë 或“字符编号 136”。您的数据更有可能包含 ASCII 无法表示的字符,例如可通过 Windows-1252 等传统 8 位编码表示的国际数据。
-
我知道,有一篇关于这个主题的完整*文章。
-
您应该将解决方案作为答案而不是在问题中发布,以便我们能够投票支持它。