에 나는 자바에서 PHP로 일부 데이터를 게시 :POST 비 라틴어 데이터를 자바에서 PHP
는try {
URL obj = new URL("http://myphpurl/insert.php");
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod(POST_METHOD);
conn.setDoInput(true);
conn.setDoOutput(true);
Map<String, String> params = new HashMap<String, String>();
params.put("title", "العربية");
OutputStream os = conn.getOutputStream();
BufferedWriter writer =
new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(params));
writer.flush();
writer.close();
os.close();
BufferedReader in =
new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
LOG.debug("response {}", response);
in.close();
response = null;
inputLine = null;
conn.disconnect();
conn = null;
obj = null;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
private String getQuery(Map<String, String> params) throws UnsupportedEncodingException {
StringBuilder result = new StringBuilder();
boolean first = true;
Iterator<Map.Entry<String, String>> it = params.entrySet().iterator();
while (it.hasNext()) {
if (first)
first = false;
else
result.append("&");
Map.Entry<String, String> pairs = it.next();
result.append(URLEncoder.encode(pairs.getKey(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(pairs.getValue(), "UTF-8"));
it.remove(); // avoids a ConcurrentModificationException
}
return result.toString();
}
insert.php 파일은 다음과 같다 :
<?php
$posttitle = $_POST["title"];
echo "$posttitle";
echo urldecode($posttitle);
?>
에코 대신 일부 gibbrish مليون
을 보여 실제 제목 العربية
입니다.
이 gibbrish는 mysql 데이터베이스에 삽입됩니다.
Additionnal 정보 :
데이터베이스가
utf8_general_ci
이며 (I 수동으로 작동하면 phpMyAdmin을 사용하여 게시물을 업데이트 할 때) 아랍어 지원합니다.나는
InputStreamReader
과InputStreamWriter
에UTF-8
을 추가, 나는 다음과 같은 문제가 있었다 : 창에- Tomcat6, (PHP + MySQL을)에 CentOS에를 - (CentOS는에서 확인>
- Tomcat6을 에 CentOS에 PHP + MySQL의) -> 안 OK
Additionnal 정보를 정기적으로 2
- 자바 스크립트를 사용하여 게시하면 페이지가 올바르게 인코딩됩니다.
eclipse + tomcat (Windows의 경우)에서 실행하고 maven이 CentOS의 패키지 전쟁 . –
요청 본문에 contentType MIME 유형을 추가했지만 매개 변수가 더 이상 전달되지 않습니다. (모두 비어 있음) : conn.setRequestProperty ("Content-Type", "text/plain; charset = utf-8"); ' –
자바 스크립트는 동일한 PHP 파일을 테스트 http://audiogag.net/preprod_files/submittest.html. 잘 작동하기 때문에 PHP 문제가 될 수 없습니다. –