Хранить введенную пользователем юникодную строку в sqlite? - PullRequest
0 голосов
/ 13 октября 2011

Приложение для Android позволяет пользователям вводить строки, которые впоследствии публикуются на веб-сайте. Я разрешаю пользователю вводить строку, используя поле EditText. Я беру это значение и вставляю его в базу данных sqlite. Столбец в sqlite идентифицируется как TEXT.

У меня есть пользователи, которые жалуются на то, что вводимые ими символы Юникода преобразуются в квадратные символы вместо введенных ими.

Я видел, что у sqlite нет таблиц преобразования в юникоде, но я думаю, что если пользователь введет юникод, то мое приложение сможет извлечь его из sqlite и затем отобразить его.

Есть ли что-то, что я пропускаю? Любое руководство по этому вопросу будет полезно.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 21 ноября 2012

Моя проблема была из-за того, что я пропустил аргумент "UTF-8" при создании моего UrlEncodedFormEntity, который разместил веб-сайт.Java и SQLite сделали автоматическое преобразование правильно.

Этот код работает:

HttpResponse response = null;
HttpClient client = null;
try {
    final HttpPost post = new HttpPost(url);
final UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairs, "UTF-8");
post.setEntity(entity);
client = new DefaultHttpClient();
response = client.execute(post);
} catch (IOException e) {
}   
0 голосов
/ 13 октября 2011

См. запись о том, как указать кодировку в SQLite. Это должно быть установлено до ввода данных.

Другая вещь, о которой я могу подумать, это то, что, скорее всего, ваши вставки сделаны с литералами, а не с привязками. Я прав? Если вы строите свои запросы вставки / обновления, будьте осторожны с SQL-инъекцией. Привязка может фактически решить вашу проблему с Unicode.

Наконец, я рекомендую вам найти образцы из этого списка символов Unicode для тестирования вашего приложения.

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