HighCharts轴标签编码

时间:2013-05-16 14:58:29

标签: highcharts

我有一个使用HighCharts图表的系统,并且似乎在显示某些UTF字符时出现问题,IE中的显示效果很好,但Chrome和Firefox无法正确显示字符。

在VB代码中,我们正在构建一个javascript函数来标记条形图。

sb.AppendLine("   xAxis: {")
sb.AppendLine("       title: {")
sb.AppendFormat(" text: '{0}'", JSEncode(Server.HtmlEncode("Planificación Mes Período")))
sb.AppendLine("       },")

在IE中,它正确显示为 PlanificaciónMesPeríodo

但是在chrome和firefox中它显示如下&在#

之前
  

Planificaci#243; n Mes Per#237; odo

我们需要对文本进行HtmlEncode以防止出于安全原因而运行任何添加HTML,我已经研究过使用RegEx来删除任何HTML标记而不是HTML编码,但它没有按照我们想要的方式工作。

我很困惑为什么它在IE中工作正常但在Chrome和Firefox中没有。

2 个答案:

答案 0 :(得分:0)

实际上,我有一个相关的问题,在这里偶然发现了你的问题。原因是IE正确解释了HTML编码数据,因为HighCharts使用HTML在IE中呈现图表。在FireFox和Chrome中,它使用SVG渲染它,因此HTML编码数据不会被解释为HTML ...例如,我有一个问题,其中一个数据标签包含&符号('&')。如果我HTMLEncode我的标签,'&'在字符串中编码为&和IE渲染完美。 Chrome / FF不会......字面上呈现'&'。如果我删除HTML编码,则Chrome / FF会显示'&'但IE并没有呈现标签,因为它解释了'&'。作为HTML编码字符的开头。

对不起,这本身并不是一个答案,但是想把它记录在某个地方!

答案 1 :(得分:0)

在第3章的RFC 4627中,它说:

JSON文本应以Unicode编码。默认编码为UTF-8。

==>这意味着无论如何在使用UTF-8时都不需要编码任何东西(在Java IDE中?)。

进一步向下说:

JSON可以使用UTF-8,UTF-16或UTF-32表示。当JSON时  是用UTF-8编写的,JSON是8bit兼容的。当JSON是  用UTF-16或UTF-32编写的二进制内容传输编码  必须使用。

如果在将Highcharts的数据从服务器传输到客户端时遇到特殊字符问题,请尝试检查http标头。它应该是这样的:

content-type: application/json; charset=utf-8

否则,请确保用于配置highcharts的JS文件保存为UTF-8。

如果您仍然觉得必须对字符进行编码,请应用RFC的第2.5章:

如果角色在基本多语言平面(U + 0000到U + FFFF)中,那么它可以表示为六个字符的序列:反向固相,后跟小写字母u,后跟四个十六进制数字,用于编码字符的代码点。十六进制字母A到F可以是大写或小写。因此,例如,只包含一个反向固相字符的字符串可以表示为“\ u005C”。

http://www.ietf.org/rfc/rfc4627.txt

判断RFC这是完美的JSON:

sb.AppendFormat("text: 'Planificación Mes Período'");