JSP: выполнение неанглийских символов в запросе mysql - PullRequest
2 голосов
/ 12 августа 2010

Я написал код JSP, который должен запускать некоторые запросы mysql INSERT, содержащие неанглийские символы (персидский).Я запускаю два типа запросов: первый - статические запросы на установку приложения, второй - пользовательский ввод.После выполнения обоих запросов неанглийские символы импортируются как "?"как я проверяю их в самом приложении и phpMyAdmin!

Я пытался выполнить эти запросы после подключения, но я не помог:

SET NAMES utf8
SET CHARACTER SET utf8
SET SESSION collation_connection = 'utf8_general_ci'

В чем проблема?Как я могу это исправить?

1 Ответ

2 голосов
/ 12 августа 2010

После выполнения обоих запросов ни один из английских символов не импортируется как "?"как я проверяю их в самом приложении и phpMyAdmin!

Таким образом, база данных (или, более конкретно, драйвер JDBC) не использует UTF-8 во время INSERT.

Обычно драйвер JDBC базы данных должен быть достаточно умным, чтобы использоватьВ базе данных и / или в таблице указана кодировка для хранения данных.Но в некоторых случаях вы также должны указать кодировку символов в строке подключения.Это верно в случае драйвера JDBC MySQL, поскольку он использует не кодировку, указанную в базе данных, а кодировку, указанную клиентом.Как его настроить, уже нужно найти в документации по драйверу JDBC.Например, в MySQL вы можете прочитать его здесь :

jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

При этом, не говоря уже о проблеме, вы должны попытаться избежать rawJava-код в файле JSP.Это приведет только к другим видам проблем в будущем.

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