jQuery HTML追加导致UTF-8国家语言字符问题
jQuery HTML append causes UTF-8 national language chars issue
我遇到了附加html的问题,从UTF-8支持的InnoDB MySQL数据库返回——对象实际上是由数据完成的,并返回由jQuery异步显示。网站和数据库只使用UTF-8。
当我发布内容时,它会进入数据库,插入,对象会被我插入的数据填满然后适当的html返回给jQuery,不幸的是,由于某些原因,它显示的不是国家字母,而是u0142u00f3
等
刷新后,网页恢复正常,字符显示正常
想法?
在进入DB类之前:
$strNoBreakSpace = mb_convert_encoding(' ', 'UTF-8', 'HTML-ENTITIES');
$strNormalSpace = mb_convert_encoding(' ', 'UTF-8', 'HTML-ENTITIES');
$ntc = str_replace($strNoBreakSpace, $strNormalSpace, $content);
从DB类返回后:
$thread= str_replace(array(chr(10), chr(13)), '', $thread);
$thread_html = json_encode(array('status' => 1, 'success' => $thread_html));
array_push($results, $upd, $ins, $thread_html);
显示给jQuery之前:
$list = array('success' => stripslashes($result[2]));
是横杠毁了它吗?我需要添加这个,这些mb_convert,否则我有问题的json对象内的html,有很多slases/td,/tr', 'r'r等。
jQuery看到的是:
{"status":1,"success":"<tr> <td class="col-md-1">27.09.15</td>ttt <td class="col-md-1 ws-nowrap"><a href="#"><span class="label label-info label-as-badge">Test</span></a></td> <td class="col-md-5"><a href id="id" name="id" href="#">u0142u00f3</a></td> <td class="col-md-5">u0142u00f3</td> </tr>"}
在PHP 5.4中,json_encode
可以使用JSON_UNESCAPED_UNICODE
标志
在PHP 5.3或更低版本中有一个辅助函数:
function json_encode_unicode($input) {
return preg_replace_callback(
'/''''u([0-9a-zA-Z]{4})/',
function ($matches) {
return mb_convert_encoding(pack('H*',$matches[1]),'UTF-8','UTF-16');
},
json_encode($input)
);
}
相关文章:
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 州和城市选择框类似于国家细分页面
- 显示每个国家的传单地图
- Possibile使用Manifest v2下的HTML5地理位置API将lat/long转换为国家/地区
- Html/Javascript-如何屏蔽除英国以外的所有欧盟国家,并允许所有非欧盟国家
- Express服务器中语言子域的最佳实践
- 我想在Javascript中探索类似C语言的字符串的整个字符
- 我们可以使用任意的编程语言来动态化HTML页面吗
- 下载所选语言的pdf文件
- keith wood日期选择器日期格式和语言
- 为现有Roslyn语言lexer/parser选择基于javascript的代码编辑器
- 正如我所能做的引导提醒,按下一个按钮可以更改语言
- json格式的国家数据到层次数据
- 谷歌将广告超链接映射到国家标记
- 一个JavaScript函数,用于根据国家/地区语言填充innerHTML
- 检测用户的国家/地区和语言'的位置脱机
- 获取访问者语言&带有javascript的国家/地区代码(客户端)
- jQuery HTML追加导致UTF-8国家语言字符问题
- 根据国家选择选择语言