使用python逐字打印乌尔都语(非拉丁语言)

时间:2017-10-01 06:06:54

标签: python urdu

我正在尝试使用python打印乌尔都语单词。我读到了关于Unicode的问题,但是[我遇到的问题是python试图像英语一样打印乌尔都语,也就是说,从左到右,逐个字符地打印。在乌尔都语字符]不能像英语那样打印。我已经尝试了一些像here那样的解决方案,但它们对我没用。我一直在尝试使用以下代码打印我的Urdu字符串。

// Save use to the database
public int CreateUser(UsersModel entity)
{
    using (SqlConnection conn = new SqlConnection(DBCon))
    {
        conn.Open();

        SqlCommand cmd = new SqlCommand("SaveUser", conn);   // call stored procedure
        cmd.CommandType = System.Data.CommandType.StoredProcedure;

        cmd.Parameters.AddWithValue("@Firstname", entity.Firstname);
        cmd.Parameters.AddWithValue("@Middlename", entity.Middlename);
        cmd.Parameters.AddWithValue("@Surname", entity.Surname);
        cmd.Parameters.AddWithValue("@Email", entity.Email);

        int rs = cmd.ExecuteNonQuery();

        return rs;
    }
}

我在Ubuntu终端上的output就像是从左到右而不是从右到左的英语,而且字符也是如此。

2 个答案:

答案 0 :(得分:2)

我认为问题出在Gnome Terminal上,它不支持双向(即从右到左或" RTL")文本输出。如果我运行你的上述程序(带编码声明):

# -*- coding: utf-8 -*-
text_string = "آکاش کمار".decode('utf-8')
print(text_string)

在Emacs shell缓冲区中( 支持混合LTR和RTL输出),我得到了正确的输出:

$ python2 urdu.py
آکاش کمار
$ 

但是,如果我在Gnome终端中运行它,我会得到您发布的向后输出。

如果您不使用Emacs,另一种方法是安装mlterm(多语言终端)包并使用它提供的终端模拟器。

答案 1 :(得分:0)

通过使用LibRaqm,您的问题可以得到解决,该库的链接如下所示 https://github.com/HOST-Oman/libraqm