【发布时间】:2013-04-19 12:23:42
【问题描述】:
我需要对 Paradox 数据库执行查询。 有一个表,其中包含带有西里尔文字的数据,我正在尝试在这样的查询中使用西里尔参数:
select *
from AccessZone zn
where zn.Name= 'Территория'
在 AccessZone 表中,我有名称为“Територия”的记录,但此查询返回 0 行。
我正在将此查询编码为 windows-1252 编码,但结果相同。
当我得到一个包含西里尔值的查询结果时,我已经破坏了像'??????'这样的符号,所以,我从 windows-1252 解码它们,然后得到正确的值。我决定在使用西里尔符号执行查询时使用这个技巧,但它不会影响结果,我仍然有 0 行。
我正在像这样使用 c# 进行编码:
private static string DecodeTo1252(string source)
{
Encoding srcEncodingFormat = Encoding.Unicode;
Encoding dstEncodingFormat = Encoding.GetEncoding("windows-1252");
try
{
byte[] output = Encoding.Convert(srcEncodingFormat,
dstEncodingFormat,
srcEncodingFormat.GetBytes(source));
return dstEncodingFormat.GetString(output);
}
catch (Exception)
{
}
return string.Empty;
}
那么,我必须如何构建查询,或对其进行编码以查询 paradox DB?
【问题讨论】:
-
也许这会有所帮助:Cyrillic encoding in C#?
-
不,它没有帮助,但谢谢。实际上,我知道目标编码,但它不会改变任何东西。执行解码查询后我仍然得到 0 行。
标签: c# .net database encoding paradox