Моя Java-программа (точнее, ее часть) отправляет запрос веб-сервису и получает rdf-строки, включающие древнегреческие слова в юникоде. Я написал программу в netbeans, и до сих пор не было проблем во время выполнения, как в среде netbeans, так и вне ее в виде отдельного jar-файла под Linux и Windows XP. Теперь внезапно греческие слова в rdf возвращаются в таком искаженном виде:
á¼€
Сначала я подумал, что это проблема Windows XP, но при проверке под Windows 7 проблема сохранилась. Я узнал, что запускаю OpenJDK под Linux, и с тех пор смог воспроизвести проблему с помощью Oracle Java. Это соответствующий код (конечно, у меня может быть туннельное зрение, поэтому, пожалуйста, сообщите мне, если вам нужно больше):
try {
HttpClient client = new DefaultHttpClient();
HttpGet get;
get = new HttpGet(URL+URLEncoder.encode(form, "UTF-8"));
HttpResponse response = client.execute(get);
if (201 == response.getStatusLine().getStatusCode()) {
HttpEntity respEnt = response.getEntity();
BufferedReader reader = new BufferedReader(new InputStreamReader(respEnt.getContent()));
StringBuilder sb = new StringBuilder();
char[] cbuffer = new char[256];
int read;
while ((read = reader.read(cbuffer)) != -1) {
sb.append(cbuffer,0,read);
}
//System.out.println(sb.toString());
rdf = new String(sb.toString().getBytes("UTF-8"),"UTF-8");
} else {
System.err.println("HTTP Request fehlgeschlagen.");
}
} catch (IOException e) {
System.err.println("Problem beim HTTP Request.");
}
Веб-сервис — это сервис морфологии Perseus, его можно найти здесь: http://services.perseids.org/bsp/morphologyservice/analysis/word?lang=grc&engine=morpheusgrc&word=. Попробуйте, например, "word=μῆνιν". Как и когда генерируется rdf, я действительно не знаю.
Буду очень благодарна за дальнейшую информацию!
BufferedInputStream
и [read()](docs.oracle.com/javase/7/docs/api/java/io/, int, int)) для чтения в массив байтов, который вы Затем можно распечатать, чтобы увидеть, что именно вы получаете. Я не совсем уверен, изменится ли то, что вы получите в ответ, в зависимости от машины, с которой вы получите ответ, но таким образом вы можете, по крайней мере, быть уверены, что если сообщение, которое вы получаете, одно и то же, то это не сервер делает что-то шаткое. . Хотя я бы не назвал это необходимым шагом. - person awksp   schedule 12.05.2014