意外的RightToLeft字符串连接

时间:2011-08-25 12:11:49

标签: c# string visual-studio-2010 globalization string-concatenation

假设我有一个DataRow,其中包含许多列,

//header

firstnameEnglish , FirstNameArabic, LastnameEnglish , LastNameArabic, 
project, addressEnglish, addressِArabic

//data'hatem', 'حاتم', 'gamil','جميل','||',

'11 el haram street','11الهرم'

我想在一个字符串中获取行数据,我可以将其导出到文本文件中。

我在for列上执行DataRow循环,类似于此,

string data = String.Empty;    

for(int i=0; i < datarow.columns.count<0; i++)
    datastr += datarow[i] + " | ";

我的问题是,data中的字符串以错误的方式连接。调试之后,我发现连接正常,直到将addressEnglish连接到data。此时data已经包含连续列中的值,包括阿拉伯列。

输出是,

'hatem', 'حاتم', 'gamil', 'جميل','||',  '11 ELHaram street','11 شارع الهرم'

这是错误的。

我想知道为什么会出现这种情况以及如何解决这个问题

由于

1 个答案:

答案 0 :(得分:0)

您确定这不是用于在屏幕上显示结果的程序问题吗?由于阿拉伯语是从右向左,因此支持Unicode的程序通常使用启发式方法来确定围绕阿拉伯语短语的标点符号应该从右到左一起呈现。

逐字符转储可以更容易确定实际存在要解决的问题。

(相反,您确定输入csv中的标点符号以正确的顺序存储吗?)