2016-10-02 87 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

相關問題