我们有一些ASCII和Unicode字符,我们希望用户在将文本插入表单的文本和文本区域字段时使用。
例如
$SpecialCharacters = array(
'single quotes'=>''',
'double quotes'=>'"',
'copyright'=>'©',
'registered'=>'®',
'trademark'=>'™',
);
我们使用jQuery UI拖放将选定的非标准字符从工具栏移动到输入字段。这工作正常。
但是,当数据保存到MySQL数据库(使用PHP)并返回时,非标准字符以格式错误的编码返回。
- 用户输入:
bill.onthebeach™
- 返回的页面显示:
bill.onthebeachâ¢
一切都是 UTF-8 编码的。
所以我认为这应该可以解决问题:
- 用户输入:
bill.onthebeach™
- 返回的页面显示:
bill.onthebeach™
问题是,是否有一个jQuery函数或插件可以将非标准字符转换为其编码形式?
™ => ™
或者,问题出在其他地方吗?如果是这样,解决方案是什么?
问题是,是否有一个jQuery函数或插件可以将非标准字符转换为其编码形式?
您说"非标准字符",但实际上是指"HTML字符引用"。无论如何,你可以通过使用JavaScript库来实现你想要的:
he.encode('bill.onthebeach™');
// → 'bill.onthebeach™'
he.decode('bill.onthebeach™');
// → 'bill.onthebeach™'
he.decode('bill.onthebeach™');
// → 'bill.onthebeach™'
但是,问题的根源似乎在其他地方 - 在运行时使用he
是没有意义的。
据我所知,Javascript总是UTF-8。这是一个你无法改变的标准。我浪费了很多时间使用 PHP 来更改我处理的旧页面的字符串编码,然后我发现您只需要将 MySQL 连接设置为 utf8
,将 HTML 页面设置为 <meta charset="UTF-8">
即可。
只要您设置了这两个设置并且您的字符在 HTML 中看起来不错,无论如何您都应该没问题。
我猜是您的MySQL连接或HTML页面缺少utf8
设置。此外,如果您有这些设置,则数据库字段使用哪种排序规则完全无关紧要。
谢谢大家...
以下是有效的基础知识...长版本对于我们的目的来说太具体了,没有用。
-
TRiG和其他人是对的...UTF-8 "一路走来"...意思是"一路走来"... 数据库和表设置为 - UTF8_unicode_ci
-
但是,如果你在你的 php 中这样做和这个 -
$data = utf8_encode($data);
特殊字符将显示"乱码"...所以不要两者兼而有之...
-
jQuery可拖动/可放置对象'ui'....确实为我们提供了在页面上使用特殊字符执行操作的选项,例如搜索和替换...... 找到这个...
var char = ui['helper
']['prevObject'][0]['firstChild']['data']
之后一切都是全速直行...
我们已经让它在html,ascii和unicode特殊字符上流畅地工作。