如何将十进制转换为任何UTF8字符?

时间:2016-10-02 17:25:46

标签: c# unicode utf-8 console ascii

我必须在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.GetStringnumberBytes中的每个字节转换为ascii字符。但是我需要将所有字节转换为单个utf8字符
有任何建议怎么做?

1 个答案:

答案 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以其他方式工作。例如,您可以阅读维基百科。