【问题标题】:Is character encoding different between HTTP:// and FILE:// protocols?HTTP:// 和 FILE:// 协议之间的字符编码是否不同?
【发布时间】:2012-06-07 19:52:47
【问题描述】:

我正在尝试在 Flash 中加载一些多语言内容。

在本地,一切似乎都运行良好。

  • 我的本地文件位于 HTML 页面上,调用作为 XML 文档的外部内容。
  • 内容包含用CDATA标签括起来的汉字。
  • Flash 正确显示中文字符(在设备字体上)。

但是,当托管在 Web 服务器上(嵌入 JSP 页面中)时,它不起作用:

  • 显示 SWF 并加载内容。
  • 内容包含相同的数据,在Flash中的原始内容的痕迹表明它确实是与本地环境中显示的相同的中文符号。
  • Flash 显示长数字(看起来每个汉字有 4 个十六进制数字)而不是汉字,这是不正确的!

所以我很好奇如果 SWF 托管在本地环境“file://...”或网络服务器“http://.. 。”。

还有其他人遇到过同样的问题吗?我正在通过字符编码、unicode、UTF-8 进行搜索,但是本地版本有效但网络服务器无效是没有意义的。嗯……

--编辑--

一些例子:

  • アリコ变成了65E5672C751F547D
  • ネクスティア变成30CD30AF30B930C630A330A2
  • アフラック变成了30A230D530E930C330AF

【问题讨论】:

  • 既然两种情况下的痕迹是一样的,那不就排除了flash之外的问题吗?你怎么显示它,显示一些代码!
  • 公司代码,这里不能插入。但是这些痕迹只是在一定程度上是相同的。看起来当它将 XML 转换为字符串时(对于我们从中提取数据的标签),这些痕迹表明中文符号在 web 版本(而不是本地版本)上更改为数字。希望我可以粘贴一些东西来澄清,但抱歉!
  • 嗯,不,当我在开发人员检查器工具中打开它时,响应实际上显示了汉字(没有数字,没有 unicode,只有符号本身。)所以我不太确定如果我们应该先在服务器端将它们预编码为 un​​icode?虽然我们的内容是多语言的,所以听起来我们需要对所有内容进行 unicode,但不确定这是正确的方法。
  • 添加了 3 个转换问题的示例。

标签: flash http character-encoding protocols local


【解决方案1】:

使用 Firebug 或 Chrome 开发者工具检查从服务器发送的 HTTP 标头。 MIME 类型是否正确?

您确实在 XML 中正确设置了编码,不是吗。

<?xml version="1.0" encoding="utf-8"?>

-- 编辑

System.useCodepage = true; 怎么样?不过,这不是灵丹妙药。

【讨论】:

  • 这实际上可能是原因。它不包含在我们动态创建的 XML 中。
  • 如果 XML 中没有指定编码,则默认为 UTF-8。如果 XML 实际上是 UTF-8 编码的,那么这可以解释为什么本地文件可以正常工作。但是,当通过 HTTP 连接传递 XML 时,HTTP Content-Type 标头可能会根据其值优先,即使 XML 指定了编码,因此如果不匹配,则无法正确解析 XML。跨度>
  • 嗯好吧。我将把上面的 XML 声明放在 HTTP 标头设置为“Content-Type:text/xml;charset=UTF-8”之上。也许 Flash 不够聪明,无法意识到标头指定它是 UTF-8!
  • 当我输入System.useCodepage = true 时,它看起来更乱了,启用它时会出现一些看起来很奇怪的带有重音符号的拉丁字母。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多