【问题标题】:Urdu printing using C#使用 C# 进行乌尔都语打印
【发布时间】:2015-11-30 13:49:08
【问题描述】:

我正在尝试用 C# 打印乌尔都语句子。假设我必须打印

10 个苹果,20 个橙子。

我的期望是,它应该打印出来(好吧,我什至不能在这里输入):

从谷歌翻译得到这个翻译只是为了详细说明我的查询。

在 C# 中,我有苹果和橙子的乌尔都语字符串。 Console.WriteLine() 正确显示格式,尽管带有 ????

原来如此,

???? 20???? 10

但是,当我看到打印预览时,我看到的是: 10 天 20 天

我通过在字符串变量的开头添加字符串来构造字符串。但是打印出来还是显示不正确。

这里是示例代码:

static void Main(string[] args)
        {
            string apples = "سیب،";
            string oranges = "سنتری";

            // Creating Urdu string for 10 apples, 20 oranges. Urdu is read from right to left. So created the string accordingly  
            string _10_apples_20_oranges = oranges + " 20 " + apples + " 10";
            Console.WriteLine("output: " + _10_apples_20_oranges);
    
            string[] lines = { _10_apples_20_oranges };
            System.IO.File.WriteAllLines(@"test.doc", lines);

        }

test.doc 文件包含 سنتری 20 سیب، 10

这与上图中给出的预期输出不匹配。

任何指针都会非常有用。

谢谢。

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: c# localization internationalization urdu


【解决方案1】:

在您的代码中,您以视觉顺序连接字符串片段:您知道要在左侧看到单词“oranges”,因此将其放在字符串的开头。然后按照从右到左的视觉顺序添加其他字符串片段。大多数意识到双向文本显示问题的文本编辑器都希望以 逻辑顺序 输入(在您的示例中,10,苹果,20,橙子),并且一旦他们发现属于从右到左的字符脚本他们将尝试确定正确的视觉顺序,这就是您的打印预览中发生的事情。控制台输出不支持双向:它按逻辑顺序显示您的字体支持的字符(this answer 提供了一种解决方法)。

所以,问题不在于您的代码,而在于您的期望。要了解更多关于视觉顺序和逻辑顺序的信息,您可以阅读this W3 article,但如果您更喜欢深入了解,可以研究Unicode Bidirectional Algorithm

【讨论】:

  • 谢谢。我看到的是,当将数字添加到此字符串时,顺序会发生变化。如果只使用乌尔都语,它工作正常。我使用 10/20 的那一刻,顺序发生了变化。我需要让它使用英文字符。
  • 只要您只有 RTL 字符串片段,逻辑顺序和视觉顺序之间就没有区别。只有当您的字符串同时包含 LTR 和 RTL 字符串片段时,这种差异才会对任何支持 Unicode 双向算法的编辑控件起作用。我不确定你所说的“让它工作”到底是什么意思。如果您想创建在控制台和浏览器中看起来相同的双向内容的字符串,或者在丰富的编辑控件中,据我所知,这是不可能的。
  • 当我打印包含乌尔都语和英语字符的字符串时,我写入字符串的文件包含英语 RTL 排序而不是乌尔都语 LTR 排序。但是,当它只是乌尔都语时,它包含 LTR 排序。通过“让它工作”,我的意思是,我希望混合字符串是 LTR 而不是当前的 RTL 顺序。
猜你喜欢
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 2016-02-02
  • 1970-01-01
相关资源
最近更新 更多