2012-01-16 6 views
0

Я использовал iTextSharp для чтения pdf-файла. Я могу прочитать английский текст, но для китайца я получаю вопросительные знаки, как я могу читать китайские персонажи с помощью iTextSharp.чтение китайских текстовых символов с помощью iTextSharp в C#

coverNoteFilePath = @"D:\Temp\cc8a12e6-399a-4146-81ac-e49eb67e7e1b\CoverNote.pdf"; 
    try 
    { 
     PdfReader reader = new PdfReader(coverNoteFilePath); 

     for (int page = 1; page <= reader.NumberOfPages; page++) 
     { 
      ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy(); 
      String s = PdfTextExtractor.GetTextFromPage(reader, page, its); 

      s = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s))); 
      coverNoteContent = coverNoteContent + s; 

     } 
     reader.Close(); 
     Response.Write(coverNoteContent); 
    } 

ответ

0

Попробуйте заменить ASCIIEncoding с одним из других классов кодирования (например, UTF8Encoding). Я полагаю, что PDF-документы знают, какую кодировку они используют, чтобы вы могли найти правильный объект в объекте PdfReader. Стоит проверить.

Из MSDN:

ASCIIEncoding соответствует кодовой странице Windows, 20127. Поскольку ASCII является 7-битная кодировка а, ASCII символы ограничены низкими 128 символов Unicode, от U + 0000 до U + 007F. Если вы используете кодировщик по умолчанию, возвращаемый свойством Encoding.ASCII или конструктором ASCIIEncoding, символы вне этого диапазона заменяются знаком вопроса (?) перед выполнением операции кодирования. Поскольку класс ASCIIEncoding поддерживает только ограниченный набор символов, классы UTF8Encoding, UnicodeEncoding и UTF32Encoding лучше подходят для глобализованных приложений.

Смежные вопросы