哪种编码将“í”替换为“\303 \255”?

vma*_*nas 2 c# utf-8 data-conversion character-encoding

任何人都知道这是什么编码。他们告诉我这是 UTF8,但我不明白如何。\n此输入:

\n\n
\n

aqu\xc3\xad(注意 i 上的重音符号)

\n
\n\n

应该产生这个:

\n\n
\n

水\303\255

\n
\n\n

似乎这是基于此表https://www.acc.umu.se/~saasha/charsets/,但我可以看到如何从 .NET 的随机用户输入字符串中获取建议的输出 - 当然无需构建这个疯狂的转换表。

\n\n

有任何想法吗?

\n

C.E*_*uis 5

它是UTF8,八进制的303 255是十进制的195 173,这些数字可能看起来更熟悉。请参阅您链接的表中的dec和标题。oct

\n\n

没有内置类型可以为某些字符生成八进制输出- 您必须决定哪些字符要“八进制转义”以及要保留哪些字符。

\n\n

以下代码片段生成您想要的输出(没有额外的空格),并根据字符是否在 ASCII 集中转义数据:

\n\n
string str = "aqu\xc3\xad";\nStringBuilder output = new StringBuilder();\nfor (int i = 0; i < str.Length; i++)\n{\n    byte[] bytes = Encoding.UTF8.GetBytes(str.Substring(i, 1));\n    if (bytes.Length == 1 && bytes[0] < 128)\n    {\n        output.Append(str[i]);\n    }\n    else\n    {\n        foreach (byte b in bytes)\n        {\n            output.Append(@"\\" + Convert.ToString(b, 8));\n        }\n    }\n}\n\nstring result = output.ToString();\n
Run Code Online (Sandbox Code Playgroud)\n