簡體   English   中英

寫入文本文件時撇號的問題

[英]An issue with apostrophes when writing to a text file

我從SQL Server數據庫中提取一些數據並將其寫入文本文件,並且在大多數情況下,該過程按預期工作。 有一個問題我一直無法解決。 撇號的顯示出來: ’

這是寫入文件的代碼:

using (var writer = new StreamWriter(filePath, false))
{
    foreach (var textLine in dataList)
    {
        writer.WriteLine(textLine);
    }
}

我曾嘗試在文本上使用Encoding.DefaultEncoding.Utf8 ,但這並沒有什么區別。

我在記事本,Notepad ++和UltraEdit中打開文件。

任何人都可以幫我識別這個問題嗎?

你確定你試圖存儲一個真正的撇號(字符代碼39)而不是一個智能引用字符嗎? https://en.wikipedia.org/wiki/Quotation_mark_glyphs

’是用於字符的UTF-8字節流' ,在Windows 1252代碼頁中顯示為ANSI字符。

UltraEdit在打開時檢測創建的​​文本文件應該沒有問題,以UTF-8編碼並顯示正確。

有關如何在UltraEdit中自動檢測UTF-8編碼的詳細信息,請參閱xsl 1.0轉換后錯誤字符編碼的答案,以及如果在配置中未啟用自動檢測,您可以執行哪些操作來打開UTF-8編碼文件( 高級- 配置 - 文件處理 - Unicode / UTF-8檢測 )或當第一個UTF-8字符不在前64 KB內時失敗。

您可以通過寫入到文件幫助上檢測UTF-8編碼的文件文本編輯器首先將3個字節0xEF為0xBB 0xBF時才顯示為ANSI字符串數據表的行寫入文本文件之前。 0xEF 0xBB 0xBF是以UTF-8編碼的文件的字節順序標記(BOM),由文本編輯器識別,但不顯示。

字符'也可以在代碼頁Windows 1252(十六進制值0x92)中使用,因此也可以通過UTF-8到ANSI的轉換存儲在文本文件中。 但是數據列表可能還包含系統代碼頁中不可用的Unicode表中的字符,因此最好將文件創建為UTF-8編碼的文本文件而不是ANSI文本文件。

暫無
暫無

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

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