У меня есть файл, который содержит как арабское, так и английское слово/буквы/цифры. Я пытаюсь распечатать файл, используя код от Here. Когда я открываю файл в блокноте, я вижу все смешные и нецензурные символы. Когда я сохраняю тот же файл, что и Юникод в Сохранить как ... меню файла (блокнот) и выбор Юникода, файл отображается правильно (я вижу арабские буквы и т. Д.).Чтение файла, содержащего арабский язык
Когда я открываю тот же файл в notepad++
единственный вариант, который отображает файл правильно это
Меню-> Кодировка> Character комплект-> арабский
С #, я пытаюсь прочитать файл построчно и распечатать его с помощью
ev.Graphics.DrawString(line, printFont, Brushes.Red, leftMargin, yPos, _sf);
где line
является линия из файла. Когда файл сохраняется в правом кодировке, все распечатывается в порядке. Но когда у нас есть проблемы с кодировкой, мы получаем кучу алмазов, вопросительные знаки и т. Д.
Вот несколько способов (из разных источников), которые я пытался открыть файл с правильной кодировкой (пожалуйста, дайте мне знать, если один из них должен работать, и я попробую еще раз):
Покушение 1
var arabic = Encoding.GetEncoding(1252);
var bytes = arabic.GetBytes(line);
line = arabic.GetString(bytes);`
Покушение 2
streamToPrint = new StreamReader(this.filepath,System.Text.Encoding.UTF8,true);
Покушение 3
byte[] utf8Bytes = Encoding.UTF8.GetBytes(line);
line = Encoding.Unicode.GetString(utf8Bytes);`
Ни один из них не работает. Может кто-нибудь любезно показать мне, какие изменения мне нужно внести в код Here, чтобы он читал файл и печатал его?
GetEncoding (1252) не может быть прав. Попробуйте 1256, 864, 720. Или отправьте файл обратно, вы не хотите его. –
@ HansPassant Спасибо. Я дам ему попытку и отправлю отчет – Zuzlx
@ HansPassant 1256 (не 1252). Если вы дадите ответ, это будет «принятый ответ». Еще раз спасибо. – Zuzlx