我在返回 Google Cloud SQL 数据库中的某些 UTF-8 字符串时遇到问题。我在下面分享我的代码。
public JSONArray getObjectsJsonArrayByCountryCodeAndDestination(String countryCode, String destinationCountryStartingLetter)
throws JSONException, UnsupportedEncodingException {
String query = "select * from EMBASSY where COUNTRY_CODE = ? AND DESTINATION LIKE '"+destinationCountryStartingLetter+"%' order by DESTINATION";
jdbcTemplate = new JdbcTemplate(dataSource);
List<Embassy> list = jdbcTemplate.query(query,
new Object[] { countryCode }, new EmbassyMapper());
JSONArray jsonArray = new JSONArray();
if (list.isEmpty()) {
return jsonArray;
} else {
for (Embassy embassy : list) {
String address = new String(embassy.getAddress().getBytes("UTF-8"), "UTF-8");
// Upto here I am getting correct value of Address
JSONObject jsonObject = new JSONObject();
jsonObject.put("ID", embassy.getID());
jsonObject.put("type", embassy.getType());
jsonObject.put("telephone", embassy.getTelephone());
jsonObject.put("address", address);
jsonObject.put("url", embassy.getUrl());
jsonObject.put("destination", embassy.getDestination());
jsonObject.put("status", embassy.getStatus());
jsonObject.put("updatedOn", embassy.getUpdatedOn());
jsonObject.put("countryCode", embassy.getCountryCode());
//System.out.println(jsonObject.toString());
jsonArray.put(jsonObject);
}
return jsonArray;
}
}
我的数据库中保存了所有正确的编码记录,但是当我以 JSONArray 的形式将这些记录返回到我的 Ajax 请求时,我得到了某些 UTF-8 字符的更改。就像我把Espaňa当作Espa 一样?为什么会这样。
我正在使用 json.org 库生成 JSON。