簡體   English   中英

如何編碼特殊字符?

[英]How to encode for special character?

我的文件輸出有問題。 我需要將字符ý和write寫入文件。 我可以使用Convert.ToChar(0253)和Convert.ToChar(0254)來做到這一點。 這是我從basic +用C#重寫的舊程序。 舊程序創建了一個簡單的文本文件,如果在寫字板中打開該文件,則會呈現特殊字符ý&þ。 但是,當我創建文件並在寫字板中打開文件時,它會將字符呈現為½和¾。 下面是在記事本和寫字板中打開的輸出文件。 如何輸出字符,以便它們在記事本和寫字板中都呈現為ý和?? 我也在下面插入了我的代碼。 提前致謝。

這樣可以在記事本中很好地呈現:

3/31/2015ý15þ
14182515þ
ENDþ

但是,在寫字板中打開文件時,其呈現方式如下:

3/31/2015ý15þ
14182515þ
ENDþ


textOut.WriteLine(shortDate + Convert.ToChar(0253) + cRenPer + Convert.ToChar(0254));

寫入文件時,您應該指定UTF8或UTF16編碼。 您可以這樣做:

StreamWriter writer = new StreamWriter(<file path>, false, Encoding.UTF8);

您可以在定義流閱讀器時設置編碼

StreamWriter textOut = new StreamWriter(new FileStream((dirPath + batchNum + ".REN"),
                                        FileMode.Create, FileAccess.Write),
                                        Encoding.UTF8); 

此構造函數的MSDN

因此,正如Thorsten Dittmar所建議的那樣,我需要將流編寫器編碼為utf8。 這允許現有應用程序按原樣讀取文件。 下面是對stream-writer類的更改。

 StreamWriter textOut = new StreamWriter((dirPath + batchNum + ".REN"), false, new UTF8Encoding(true));

這是一個編輯:我最終修改了代碼。 盡管文本文件最終在寫字板中被正確解釋,但舊版應用程序仍未讀取該文件。 我的修改代碼如下:

 StreamWriter textOut = new StreamWriter(new FileStream((dirPath + batchNum + ".REN"),
                                    FileMode.Create, FileAccess.Write),
                                    System.Text.UnicodeEncoding.Default); 

您可以使用以下代碼寫入文件,請注意第二個編碼參數。 這將影響文件的編碼方式,進而影響各種文本編輯器對待ite的方式。

string fileName = "myFile.txt";
using (TextWriter textOut = new StreamWriter(File.OpenWrite(fileName),System.Text.Encoding.Unicode))
{
         textOut.WriteLine(Convert.ToChar(0254));
}

暫無
暫無

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

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