Paradox DB:查询中的西里尔字母,C#

Posted

技术标签:

【中文标题】Paradox DB:查询中的西里尔字母,C#【英文标题】:Paradox DB: cyrillic words in a query, C# 【发布时间】: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 行。 【参考方案1】:

Paradox 在 DOS 和 Windows 产品中有多个版本。但是大多数或所有这些都在该系统中使用带有“代码页”的 ascii 编码。您可能会得到正确的记录。但我不确定如何以 Unicode 显示它。我认为 Unicode 在显示获得的数据时出现问题。我认为您必须了解最初存储数据时使用的代码页。 Paradox 可能将此称为排序顺序,至少在某些版本中它是由 Paradox.sor 表定义的。

【讨论】:

以上是关于Paradox DB:查询中的西里尔字母,C#的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Basic 6 中解码字符串

PHP 中的西里尔字母音译

PHP 中的西里尔字母音译

Paradox 插入数据操作必须使用可更新查询

C# 中的悖论表

Firebird 数据库无法识别 unicode/西里尔字母