Не удается правильно получить китайские иероглифы с помощью ResetSet.getString - PullRequest
2 голосов
/ 11 августа 2010

Мой проект требует, чтобы я написал веб-приложение с JSP для связи с Oracle 10g R2

JSP / Javascript / HTML хранится в OC4J 9i, а база данных создается с набором символов как UTF-8. Интерфейс между JSP и Oracle основан на тонком драйвере JDBC

Я попытался набрать несколько китайских символов на странице JSP, а затем сохранить в Oracle. В Oracle (SQL Plus) эти символы не могут отображаться правильно. Тогда символы не могут быть показаны правильно также с ResetSet.getString.

К вашему сведению, директива страницы для каждого JSP уже <% @ page contentType = 'text / html; charset = utf-8 'pageEncoding =' utf-8 '%>

Есть подсказка?

Ответы [ 2 ]

0 голосов
/ 11 августа 2010

Убедитесь, что для defaultNChar установлено значение true в соединении JDBC.См. свойство defaultNChar .

0 голосов
/ 11 августа 2010

Я пытался ввести некоторые китайские иероглифы на странице JSP

  • Кодировка страницы , для которой страница JSP должна быть установлена ​​в UTF-8.

    <%@ page pageEncoding="UTF-8" %>
    

    Проверьте с помощью средства проверки заголовка ответа HTTP, такого как Firebug , был ли получен ответ с заголовком Content-Type: text/html; charset=UTF-8.

  • Сервлет, который обрабатывает отправленные данные в doPost(), должен установить кодировку запроса в UTF-8 , прежде чем получит доступ к параметрам.

    request.setCharacterEncoding("UTF-8");
    

    Если это на самом деле запрос GET и вы собираете параметры в doGet(), то вместо этого вам нужно сконфигурировать рассматриваемый сервлет-контейнер для использования UTF-8 для декодирования строки запроса. Вот пример, нацеленный на Tomcat:

    <Connector (...) URIEncoding="UTF-8" />
    

затем сохраните в Oracle. В Oracle (SQL Plus) эти символы не могут отображаться правильно.

  • База данных должна быть создана с правильным набором символов:

    CREATE DATABASE dbname CHARACTER SET UTF8
    

Тогда символы не могут быть правильно отображены с помощью ResetSet.getString.

  • Если вы предприняли все вышеупомянутые шаги, эта проблема должна быть исправлена.

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...