чтение символов китайского текста с помощью iTextSharp в c # - PullRequest
0 голосов
/ 16 января 2012

Я использовал iTextSharp для чтения PDF-файла. Я могу читать английский текст, но для китайского я получаю знаки вопроса, как я могу читать китайские иероглифы, используя iTextSharp.

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);
    }

1 Ответ

0 голосов
/ 16 января 2012

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

Из MSDN :

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

...