Неожиданная конкатенация RightToLeft String - PullRequest
1 голос
/ 25 августа 2011

Допустим, у меня есть DataRow с таким количеством столбцов,

//header

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

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

'Улица Эль-Харам '11, '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 голосов
/ 25 августа 2011

Вы уверены, что дело не в программе, которую вы используете для отображения результатов на экране? Поскольку арабский язык направлен справа налево, программы, поддерживающие Юникод, часто используют эвристику, чтобы решить, какую часть знаков препинания вокруг арабской фразы следует отображать справа налево вместе с ней.

Символьный дамп облегчил бы уверенность в том, что проблема действительно решается.

(И наоборот, вы уверены, что пунктуация во входном csv хранится в правильном порядке?)

...