簡體   English   中英

無法顯示葡萄牙語/ UTF-8字符

[英]Can't get portuguese/UTF-8 characters to show

我有一個包含字符“á”和“ã”的字符串,並且不顯示它們。 “ã”將顯示為“Æ”,而不會出現“á”。 我在SO上經歷了很多問題,但是沒有一個解決我的問題,例如這個問題: 如何在C#中將字符串轉換為UTF-8? ,因此,除非我有完全不同的答案,否則將我重定向到另一個問題可能不會做太多事情。

好吧,我當前正在使用的代碼就是我鏈接回那里的那個代碼,它是:

byte[] bytes = Encoding.Default.GetBytes(myString);
myString = Encoding.UTF8.GetString(bytes);

這樣,特殊字符都將顯示為問號( )。

如果我將UTF8更改為UTF32,它將顯示帶有問號的整個字符串。

我也嘗試過這個:

Encoding enc = Encoding.GetEncoding("ISO-8859-1");
string original = myString;
byte[] iso_8859_1 = enc.GetBytes(original);
string roundTripped = enc.GetString(iso_8859_1);
Debug.Assert(original == roundTripped);

在嘗試更改編碼之前,它為我提供了與初始輸出相同的輸出(因此,它基本上對我的字符串不起作用)。

我已經檢查了我正在使用它的應用程序的配置文件,並將編碼設置為UTF-8,因此在這里也可能不是問題。

有誰知道這可能是錯誤的,還是有人通過其他方式“解碼”我的字符串並顯示正確的輸出?

此外,我已經嘗試過以下問題的答案: 處理包含“問號”(?)的字符串時出現編碼問題 ,如果我實際使用單詞“ESPAÑOL”,它會很好顯示,但是如果我將其放入字符串中沒有。 其中唯一的“特殊”字符是我提到的那兩個字符,除非空格和行的更改也有所不同(但我不知道)。

如果有任何進一步的信息會有所幫助,請讓我知道,我已經嘗試解決了幾個小時。

-編輯-

這就是我得到myString的方式:

Process proc = new Process();
proc.StartInfo.StandardOutputEncoding = Encoding.Unicode;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.Arguments = "start /c cscript.exe /U " + Path.Combine(Environment.SystemDirectory, "slmgr.vbs") + " /xpr";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardInput = true;
proc.Start();
string q = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();

從字符串到bytes轉換將轉換為ASCII。 兩種轉換都使用Unicode。

byte[] bytes = Encoding.Unicode.GetBytes(myString);
myString = Encoding.Unicode.GetString(bytes);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM