如何在 javascript / jquery 中打印 unicode 表情符号
How to print unicode emoticons in javascript / jquery
我正在使用 Javascript/jQuery、PHP 和 Websockets 创建聊天室。我想支持 Unicode 表情符号。我有一个带有表情符号的 DIV,当用户单击其中一个时,表情符号会插入到输入框中。简单。
用户按 "enter" 并将文本发送到 PHP。但是PHP看不懂表情(显示“??”),所以我在Javascript中做了一个函数,在提交给PHP之前转换为\uXXXX格式(4字节) .
示例:
1) 用户提交 "testtest"
2) Javascript 转换为 "test\uD83D\uDE00test"(下面的函数)- 如果我转到 Chrome 控制台并键入 "test\uD83D\uDE00test",它会正确显示 "testtest",所以,转换后的字符串是正确的。
3) 将字符串提交给PHP:"test\uD83D\uDE00test"
4) PHP 发送到 Websocket,它只会将字符串附加到 DIV,类似于 $('#chat').append(d)
,其中 "d"(从 socket.io 对象)包含 "test\uD83D\uDE00test".
但是显示字符串"test\uD83D\uDE00test"...我想显示表情
我的错误在哪里?
表情转\u格式功能:扫描所有字符,只修改非ascii字符。
function ChatUCode(t) {
S='';
for (a=0;a<t.length;a++) {
if (t.charCodeAt(a)>255) {
S+='\u'+('0000'+t.charCodeAt(a).toString(16)).substr(-4,4).toUpperCase();
} else {
S+=t.charAt(a);
}
}
return S;
}
找到解决方案,感谢@cegfault idea。
将字符串发送到JSON.parse
函数,它会正确显示表情符号。但我不得不将字符串转义为 JSON 格式。
$('#chat').append(JSON.parse('"'+d+'"'));
另一种不太安全的方法是相同的想法,但使用 eval()
函数,也在引号之间。
我正在使用 Javascript/jQuery、PHP 和 Websockets 创建聊天室。我想支持 Unicode 表情符号。我有一个带有表情符号的 DIV,当用户单击其中一个时,表情符号会插入到输入框中。简单。
用户按 "enter" 并将文本发送到 PHP。但是PHP看不懂表情(显示“??”),所以我在Javascript中做了一个函数,在提交给PHP之前转换为\uXXXX格式(4字节) .
示例:
1) 用户提交 "testtest"
2) Javascript 转换为 "test\uD83D\uDE00test"(下面的函数)- 如果我转到 Chrome 控制台并键入 "test\uD83D\uDE00test",它会正确显示 "testtest",所以,转换后的字符串是正确的。
3) 将字符串提交给PHP:"test\uD83D\uDE00test"
4) PHP 发送到 Websocket,它只会将字符串附加到 DIV,类似于 $('#chat').append(d)
,其中 "d"(从 socket.io 对象)包含 "test\uD83D\uDE00test".
但是显示字符串"test\uD83D\uDE00test"...我想显示表情
我的错误在哪里?
表情转\u格式功能:扫描所有字符,只修改非ascii字符。
function ChatUCode(t) {
S='';
for (a=0;a<t.length;a++) {
if (t.charCodeAt(a)>255) {
S+='\u'+('0000'+t.charCodeAt(a).toString(16)).substr(-4,4).toUpperCase();
} else {
S+=t.charAt(a);
}
}
return S;
}
找到解决方案,感谢@cegfault idea。
将字符串发送到JSON.parse
函数,它会正确显示表情符号。但我不得不将字符串转义为 JSON 格式。
$('#chat').append(JSON.parse('"'+d+'"'));
另一种不太安全的方法是相同的想法,但使用 eval()
函数,也在引号之间。