как конвертировать строку юникодов в символ? - PullRequest
2 голосов
/ 03 мая 2011

У меня есть текстовый файл, в котором наборы Unicodes записываются как

" '\ u0641'", " '\ u064A', '\ u0649', '\ u0642', '\ u0625', '\ u0644', '\ u0627', '\ u0647', '\ u0631' , '\ u062A', '\ u0643', '\ u0645', '\ u0639', '\ u0648', '\ u0623', '\ u0646', '\ u0636', '\ u0635', '\ u0633' , '\ u0641', ​​'\ u062D', '\ u0628', '\ u0650', '\ u064E', '\ u062C', '\ u0626" " '\ U0622'", " '\ u062E', '\ u0644', '\ u064A', '\ u0645" .

Я открыл файл и начал читать файл, используя метод readline. Я получил указанную выше строку в виде строки, теперь я хочу преобразовать весь Unicode в char, чтобы я мог получить читаемую строку. я попробовал логику, но это не сработало, я застрял с преобразованием строки "'\ u00641" в char

Ответы [ 3 ]

3 голосов
/ 03 мая 2011

Вы можете извлечь строки, содержащие отдельные числа (например, с помощью Regex), применить Int16.Parse к каждому и затем преобразовать его в символ.

string num = "0641"; // replace it with extracting logic of your preference
char c = (char)Int16.Parse(num, System.Globalization.NumberStyles.HexNumber);
0 голосов
/ 03 мая 2011

Что делать, если вы делаете что-то вроде этого:

string codePoints = "\u0641 \u064A \u0649 \u0642 \u0625";

UnicodeEncoding uEnc = new UnicodeEncoding();

byte[] bytesToWrite = uEnc.GetBytes(codePoints);
System.IO.File.WriteAllBytes(@"yadda.txt", bytesToWrite);


byte[] readBytes = System.IO.File.ReadAllBytes(@"yadda.txt");
string val = uEnc.GetString(readBytes);

// * Даниель 1004 *

0 голосов
/ 03 мая 2011

Вы можете разобрать строку, чтобы получить каждый символ Юникода.Чтобы преобразовать юникод в читаемый символ, вы можете сделать

char MyChar = '\u0058';

Надеюсь, эта помощь

...