2016-10-02 112 views
0

我必须在c#中编写一个程序,它将一个十进制整数作为输入,并将其转换/编码为UTF8字符并输出。例如:
输入:960
输出:π如何将小数转换为任何UTF8字符?

我写了这么多的使用各种代码片段我在互联网上找到:

 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字符
任何建议如何做到这一点?

+0

问题听起来像默认控制台字体不支持字符> 127.请参阅 - http://stackoverflow.com/questions/20631634/changing-font-in-a-console-window-in-c-sharp – ChrisF

回答

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

+0

哦。所以我得到的是在unicode中编码的字节。那么我如何将它们转换为UTF8? – Yokubasu

+0

@Yokubasu转换哟UTF8是什么意思?你需要UTF8字节?或UTF8字符串?如果你需要字符串,你根本不需要触摸UTF8。您只需使用UTF32编码将字节转换为字符串即可。 – Zergatul

+0

我需要两个我认为 – Yokubasu

相关问题