我正在尝试使用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就像是从左到右而不是从右到左的英语,而且字符也是如此。
答案 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