【问题标题】:Sencha Touch, OpenLayers, GeoServer: Wrong encoding on devices using Android 2.2Sencha Touch、OpenLayers、GeoServer:使用 Android 2.2 的设备上的编码错误
【发布时间】:2011-11-08 14:05:35
【问题描述】:

我使用 Sencha TouchOpenLayers 创建了一个小型测试页面,并且正在从 GeoServer 接收 WMS/WFS 数据。 p>

我已将 HTML 页面上的编码设置为 UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我使用以下语句从我的 GeoServer 中提取一些 WFS 数据:

var post = new OpenLayers.Request.POST({
    url: 'dataprovider.ashx',
    data: ...,
    headers: {
        "Content-Type": "text/xml;charset=utf-8"
    },
    callback: function (response) {
        ...
    },
});

我认为这应该给我编码为 UTF-8 的请求数据。

使用 iPhone 4 (IOS 4) 和三星 Galaxy Tab 10.1 (Android 3.1) 运行良好。

我的问题是: 使用搭载 Android 2.2 的设备,我以不同的编码获取数据。

我希望收到的字词之一是 Høj,但我收到的是 Høj (ANSI)。

使用 FireFox 和 Chrome 我知道如何调试来自 GeoServer 的响应,但我不知道如何调试手机或平板电脑。

为什么在 Android 2.2 上编码错误?

已更新:问题似乎与使用 Android 2.2 的设备有关。 HTC Legend、三星 Galaxy SII 和三星 Galaxy Tab 7 都存在问题 - 均运行 Android 2.2。

【问题讨论】:

    标签: character-encoding sencha-touch openlayers android-2.2-froyo geoserver


    【解决方案1】:

    我在使用 GeoServer、openLayers 和 Android 浏览器 (Android 2.2) 时遇到了完全相同的问题。

    我进行了一些研究,寻找存在问题的地方。总而言之,我使用了 XMLHttpRequest.js。在这个文件中,openLayers 正在创建 XMLHttpRequest 对象,发出请求并接收响应。我还发现在这个阶段已经收到的数据有编码问题。

    我还使用wireshark 嗅探通信,以确保我发送的数据采用正确的编码(utf-8)。我转储了这些数据并发现它是正确的 utf-8 数据。 但有趣的是,当我尝试使用 iso-8859-1 显示我的 utf-8 数据时,我收到了与在 Android 浏览器中完全相同的输出。

    我的结论: 在 android 2.2 Web 浏览器中,XMLHttpRequest 对象总是在读取数据,假设采用 iso-8859-1 编码。

    我的解决方案: 您必须自己修复字符串。首先,您必须制作必须记住的地图,例如“ø”是“ø”。然后当你发现“ø”序列时逐个字符地检查,用“ø”代替它。这是示例代码:

    goodString = "";
    for( i = 0; i < wrongString.length; i++) {
        var w = wrongString.charCodeAt(i);
        var c = wrongString.charAt(i);
        if(w == "Ã".charCodeAt(0) {
            w2 = wrongString.charCodeAt(++i);
            if(w2 == "¸".charCodeAt(0))
                c = 'ø';
        }
        goodString += c;
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 2012-03-06
      • 1970-01-01
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多