【问题标题】:Non Ascii Unicode Encode and Decode in javajava中的非Ascii Unicode编码和解码
【发布时间】:2019-02-08 03:50:29
【问题描述】:

我们如何在java“Non-ASCII Unicode encoding”中以编程方式进行。 输入是:“abc ആന” 和输出应该是: "abc \u0d06\u0d28"

注意:- Ascii 和空格字符未转换为 Unicode 字符 所有其他字符都将被编码。

我们需要这种转换,因为服务器不支持非 ascii 字符。

【问题讨论】:

  • 例如Uri.encode() / URLEncoder.encode()
  • 这是通过一种小方法完成的,该方法将所有非 ascii 字符替换为它们的 unicode 转义序列(不要忘记也转义反斜杠,否则您的编码将不会是双射的)。向我们展示你已经做了什么以及它在哪里出了问题。

标签: java android unicode encode


【解决方案1】:

需要将服务器端编码更改为将在 MySql 数据库中支持的 UTF-8

在 android 端,您还需要将这些字符编码为 UTF-8,因为字符 (ആന) 是 UTF-8

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.setChunkedStreamingMode(0);
urlConnection.setConnectTimeout(2500);
urlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");//<- and here !!!
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setRequestMethod("POST");

if(jsonObject!=null) {
    OutputStream os = urlConnection.getOutputStream();
    os.write(jsonObject.toString().getBytes("UTF-8"));//<- and here !!!
}

【讨论】:

  • 感谢您的回答..这个问题仅在 android 端解决。就像将非 ascii 字符转换为 unicode。
猜你喜欢
  • 2012-09-16
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多