java - 服务器响应中的特殊字符问题

标签 java android unicode character-encoding fileoutputstream

当我向服务器请求(GET)内容时,我可以获得如下响应: 克??

但实际内容是:KòÉ

为了解决此问题,我尝试在保存和读取文件内容时使用 UTF-8 格式,如下所示:

//保存内容

   OutputStreamWriter sout = new OutputStreamWriter (new FileOutputStream(new File(path)),Charset.forName("UTF-8"));

   BufferedWriter buff_out= new BufferedWriter(sout); 

    int line = 0;
    while((line = buff_in.read()) != -1) 
            buff_out.write(line);

//读取内容

    InputStream inputStreamRead = new FileInputStream(path);
    StringBuilder stringBuilder = null;

    InputStreamReader inputStreamReader = new InputStreamReader(inputStreamRead, Charset.forName("UTF-8"));
    BufferedReader buffReader= new BufferedReader(inputStreamReader);

    String line;
    stringBuilder = new StringBuilder();
    try 
    {
        while (( line = buffReader.readLine()) != null) 
        {
            stringBuilder.append(line);
            stringBuilder.append('\n');
        }
        Log.d("Main", "Test:: "+stringBuilder.toString());
    } 

在上述逻辑的帮助下,我不可能得到 KòÉ 的实际内容。

我也尝试过读取字节。谁能帮我解决这个问题。

提前致谢。

最佳答案

您可以尝试通过以下方式删除它
跨度跨度 = Html.fromHtml(stringBuilder.toString(), this, null); 尝试打印跨区文本。

关于java - 服务器响应中的特殊字符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973118/

相关文章:

java - Hazelcast为Map添​​加索引,其中不同类的对象实现相同的接口(interface)

java - Android 如何在 Activity 之间传递 LinkedHashMap?

java - Android NameValuePair 发送值

javascript - 如何使用javascript动态地从 "1f628"到 "\u{1f628}"编写表情符号unicode

c++ - Unicode 支持需要 wchar_t 吗?

java - visualvm历史图

java - 实例化类型 <?> 的泛型类

java - 谷歌地图 : New markers are not showing after resuming map activity

android - Android中的平滑滚动

r - 连接从左到右 (LTR) 和从右到左 (RTL) 文本