【发布时间】:2014-01-31 21:18:23
【问题描述】:
我有一个非常奇怪的问题(我已经搜索过 - 这是一个常见问题,但我没有找到任何可行的解决方案)。
我正在使用 C# (.net 4.0) 和 SQLite。 Pragma 编码向我显示 UTF8,所以我想以这种编码保存数据。 我试着用这样的东西:
private String ToUTF8(string input) {
Encoding ecdng = Encoding.Default;
byte[] bts = ecdng.GetBytes(input);
ecdng = Encoding.UTF8;
return ecdng.GetString(bts, 0, bts.Length);
//return input;
}
private String FromUTF8(string input)
{
Encoding ecdng = Encoding.UTF8;
byte[] bts = ecdng.GetBytes(input);
ecdng = Encoding.Default;
return ecdng.GetString(bts, 0, bts.Length);
//return input;
}
但它不起作用。我要保存数据时使用 ToUTF8,选择数据时使用 FromUTF8。
我找到的第二个解决方案是:
private IDbDataParameter AddParameter(IDbCommand command, string paramName, DbType type, object value)
{
IDbDataParameter parameter = command.CreateParameter();
parameter.ParameterName = paramName;
parameter.DbType = type;
if (value != null)
parameter.Value = value;
else
parameter.Value = DBNull.Value;
command.Parameters.Add(parameter);
return parameter;
}
但它也不起作用。
我想在我的数据库中存储波兰语。当我通过 SQLiteStudio 预览数据时,我用奇怪的符号代替了波兰语字母。 在程序中我有同样的问题,但波兰字母上有其他符号。
谁能帮我解决这个问题?
最好的问候, 马特。
【问题讨论】:
-
数据库驱动程序自动在 UTF-8 和 C# 的
String使用的编码之间进行转换。你不需要在你的代码中做任何事情。 -
嗨。感谢您的回复,但没有在 c# 上进行任何转换,它仍然无法正常工作。我有数据库吗?在地方,应该是波兰字母..
-
嗯,我从文件中读取数据时可能有问题?当我打印文件内容时,我也没有波兰字母。我用 read System.IO.File.ReadAllLines(file, Encoding.UTF8);