не может отображать символы Юникода - PullRequest
2 голосов
/ 12 октября 2011

Я хочу отобразить турецкие символы, хранящиеся в базе данных PostgreSQL, на моей странице JSP, которую я включил: <meta http-equiv="content-type" content="text/html;charset=utf-8" />.

Я до сих пор не вижу фактический турецкий набор символов на экране. В базе данных строка хранится как %C4%9F%C4%B1%C4%B0%C3%B6%C5%9F%C3%BC%C4%9F%C4%B0

Когда я получаю его из PostgreSQL, используя resultsetwrapperobject.getstring("columnname");, он автоматически преобразует его в строку, подобную этой: \304\237\304\261\304\260\303\266\305\237\303\274\304\

Я хочу знать, почему происходит это автоматическое преобразование и как остановить это преобразование.

1 Ответ

2 голосов
/ 12 октября 2011

Можете ли вы взглянуть на код класса 'resultsetwrapperobject'?Может быть, реализация использует буферизованный ридер с кодировкой по умолчанию (или специальной).

Вы можете использовать

public String(byte bytes[], String charsetName)

для преобразования строки

final String charSet = "UTF8"; // or "ISO-8859-1"
String tSrt = resultsetwrapperobject.getstring("columnname");
tStr = new String(tStr.getBytes(),charSet);

Вы также можете попробовать установить кодировку поля по умолчанию для java как системное свойство java.

-Dfile.encoding = UTF8

...