У меня возникли проблемы с отображением «велярного носового» символа (ŋ) (но я предполагаю, что одна и та же проблема возникла бы с другими редкими символами).Символ, не отображающийся в html
У меня есть таблица MySQL, которая содержит слово с этим символом. Когда мой код извлекает его для отображения на моей странице HTML, он отображается как знак вопроса.
Я попробовал несколько вещей: 1) Пробовал с помощью CONVERT MySQL, чтобы преобразовать извлеченную строку в UTF-8, потому что я понял, что строка хранится в моей таблице как «Latin1»:
SELECT CONVERT(Name USING utf8)
Вместо:
SELECT Name
Это не помогло, и, когда я сохранил строку в моем Java коде с проблемным словом («Yolŋu»), а затем передал строку через остальную часть коды проблемы все еще происходило (т. е. проблема не в разных кодировка символов, используемая моей БД).
2) Я также попытался создать новую строку из байтов:
new String(name.getBytes("UTF-8"));
Строка в настоящее время передается от Java в HTML с помощью JSONObject, который передается в файла JavaScript:
Соответствующий формат JSON код:
JSONArray names = new JSONArray();
for (int iD: iDs)
{
JSONObject namesData = new JSONObject();
String name = NameDB.getNameName(iD);
nameData.put("label", name);
nameData.put("value", iD);
names.put(nameData);
}
return names;
Соответствующий код сервлета:
response.setContentType("application/json");
try (PrintWriter out = response.getWriter())
{
out.print(namesJSONArray);
}
Соответствующий код js:
Ajax-вызов сервлета производится через автозаполнение jquery ui «source».
Я довольно новичок в кодировании в целом и очень новичок в теме кодирования символов.
спасибо.
Отлично. Точка (2) сделала трюк. Небольшая коррекция: метод называется «setCharacterEncoding». – theyuv
Исправлено для других посетителей. –