我必须在c#中编写一个程序,它将十进制整数作为输入,并将其转换/编码为UTF8字符并输出。例如:
输入:960
输出:π
我使用我在互联网上找到的各种代码片段写了这么多:
int dec;
dec = int.Parse(Console.ReadLine());
Console.OutputEncoding = Encoding.UTF8;
UTF8Encoding utf8 = new UTF8Encoding();
byte[] decBytes = new byte[sizeof(int)];
decBytes = BitConverter.GetBytes(dec);
String s = utf8.GetString(decBytes);
Console.WriteLine(s);
它与前127个符号(我假设ascii表)一起正常工作,但与其他人一起,我得到带有问号的框作为输出。
如果我错了,请纠正我,但据我所知utf8.GetString
将numberBytes
中的每个字节转换为ascii字符。但是我需要将所有字节转换为单个utf8字符。
有任何建议怎么做?
答案 0 :(得分:0)
960 - 是您的符号的UTF16或UTF32代码:
BitConverter.GetBytes(960);
{byte[4]}
[0]: 192
[1]: 3
[2]: 0
[3]: 0
Encoding.UTF32.GetBytes("π")
{byte[4]}
[0]: 192
[1]: 3
[2]: 0
[3]: 0
Encoding.BigEndianUnicode.GetBytes("π")
{byte[2]}
[0]: 3
[1]: 192
Encoding.UTF8.GetBytes("π")
{byte[2]}
[0]: 207
[1]: 128
UTF-8以其他方式工作。例如,您可以阅读维基百科。