我正在尝试在datagridview的单元格中打印一个字符串,其中包括波斯语和英语字符,甚至包括任何语言。当我在指定的单元格中打印此值时,它变得格格不入。
这是图片:
答案 0 :(得分:0)
我假设波斯语是从右到左阅读的?我们的希伯来语翻译中有很多相同的问题!
您需要查看将使用这两种语言的任何控件上的RightToLeft
属性设置为Yes
。
答案 1 :(得分: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!)
编辑:我想你希望转换函数自动将\ 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);