2012-02-14 43 views
0

我试图在datagridview的单元格中打印一个字符串,该字符串包含波斯文和英文字符,甚至包括任何语言。当我在指定的单元格中打印此值时,它变得格式严重不良。Datagridview波斯格式化

这里是图片:

screenshot

+0

你会想看看文化或UTF-8编码或两者兼而有之。 – MethodMan 2012-02-14 14:29:48

+0

你能否给我一个链接或者......?我已经将此设置为我的表单的负载: InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo(“fa”)); – Ehsan 2012-02-14 14:31:50

+0

这里是来自CodeProject的DataGridView打印机类示例,您可能需要查看以及http://www.codeproject.com/Articles/13678/The-DataGridViewPrinter-Class – MethodMan 2012-02-15 14:37:42

回答

0

我假设波斯读从右到左?我们在希伯来语翻译中遇到了很多相同的问题!

你会想在任何将使用两种语言的控件上设置RightToLeft属性为Yes

+0

是的,我知道RTL是答案,但我找不到任何选项使一列数据网格RTL ,但有这个选项可以使整个datagridview RTL ... – Ehsan 2012-02-14 14:39:19

+0

这是不可能的。 'RightToLeft'只适用于控件,你必须为整个事情设置它。 – 2012-02-14 14:59:20

0

存储在字符串中的所有字符串其实都是Unicode.Unicode。阅读:Strings in .Net and C#The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

编辑:我想你希望Convert函数自动将\ x11更改为\ u25c0,但这里的问题是\ x11在任何编码中都是有效的,差异通常以字符\ X80,所以转换功能将保持它,即使你做到这一点:

string reEncodedString = null; 
byte[] unicodeBytes = UnicodeEncoding.Unicode.GetBytes(value); 
byte[] sourceBytes = Encoding.Convert(Encoding.Unicode, 
           sourceEncoding, unicodeBytes); 

您可以unicode.org从CP850到Unicode的映射看到。所以,要进行这种转换,您必须手动更改这些字符。

你也想确保,如果你要使用波斯语字符做这行代码

System.Globalization.CultureInfo language = new System.Globalization.CultureInfo("fa-ir"); 
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(language); 

,并设置字符回英语使用这段代码

System.Globalization.CultureInfo language = new System.Globalization.CultureInfo("en-us"); 
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(language); 
+0

我已经使用了您所说的答案,但我仍然得到相同的结果: string reEncodedString = null; byte [] unicodeBytes = UnicodeEncoding.Unicode.GetBytes(result); byte [] sourceBytes = Encoding.Convert(Encoding.Unicode, Encoding.UTF8,unicodeBytes); //编码utf16 = Encoding.GetEncoding(1200); // unicode编码 message.Operator = read = Encoding.UTF8.GetString(sourceBytes,0,sourceBytes.Length); – Ehsan 2012-02-15 07:13:23