我有存储在MS-Access数据库表中的欧元符号:扩展ASCII字符,如欧元符号转换为它的Unicode等效
SELECT
CurrencySymbol,
Len(CurrencySymbol) AS DataLength,
Asc(CurrencySymbol) AS AsciiCode
FROM table1;
CurrencySymbol DataLength AsciiCode
-------------- ---------- ---------
€ 1 128
这里是我用来阅读的.NET代码表:
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + args[0]);
connection.Open();
OleDbCommand command = new OleDbCommand("SELECT * FROM [table1]", connection);
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
for (i = 0, j = reader.FieldCount; i < j; i++)
{
System.Diagnostics.Debug.Print(reader.GetValue(i));
}
}
本来,我是在用数据写入StreamWriter
到一个文本文件中。我注意到欧元符号写为€
,这可能是用UTF-8编码的欧元符号的unicode。调试结果:
reader.GetValue(i).ToString() -> "€"
reader.GetValue(i).ToString().ToCharArray()[0] -> 8364 '€'
我怎么能强制执行.NET来吐出输出的扩展ASCII字符按原样?这些字符应该被写入一个CSV文件。
这些字符需要放在一个文本文件中 - 一个ANSI文本文件。 –
(这与现在删除的评论有关,声称欧元符号不包含在任何ANSI编码中):欧元符号在代码页1252(西欧)中,值为128 –