[英]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.Default
和Encoding.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.