我正在尝试将unicode字符串转换为javascript中的十六进制表示形式.
这就是我所拥有的:
function convertFromHex(hex) {
var hex = hex.toString();//force conversion
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
function convertToHex(str) {
var hex = '';
for(var i=0;i<str.length;i++) {
hex += ''+str.charCodeAt(i).toString(16);
}
return hex;
}
Run Code Online (Sandbox Code Playgroud)
但是如果像中国人那样失败的unicode角色;
输入:汉字
输出:ªo"[W
有任何想法吗?这可以在javascript中完成吗?
扬声器图标unicode 1f50a是"其他符号和象形文字"系列中的5位数字,当我尝试显示它时,我得到"a",所以显然我得到1f50(不存在空白),然后是"a".我可以显示任何4位数的unicode字符,但无法找到如何显示较长的字符.我知道平板电脑可以显示它,因为我可以在Unicode地图应用程序中看到它.
textSound = (TextView)findViewById(R.id.textSound);
textSound.setText("\u1f50a");
Run Code Online (Sandbox Code Playgroud) 我有文本框,用户可以在其中输入ASCII/UTF-8中的字符或两者的组合.在javascript中是否有任何API我们可以计算在文本框中输入的字符的字符串长度(以字节为单位).
就像我输入ascii字符一样,让我们说:mystring - 长度将计算为8.但是当输入UTF8字符时,字符可以是2/3/4字节.
让我们说输入的字符:i♥u,字节长度为5.
文本框可以接受最多31个字符的长度.但如果输入了UTF8字符,它将不接受字符串:i♥ui♥ui♥ui♥ui♥u.长度是30.
即使对于UTF8字符,我们是否可以限制用户输入不超过31的字符.
我在 html 代码中添加了一个表情符号,并在 div 中写入了它的 dec 表示 - “ ”; 我如何获得?的数字表示?我需要处理一个包含文本和表情符号的字符串,并且表情符号应该在数字视图中表示。所以,如果我有一个包含 - "hello world ?"的字符串,它应该被替换为"hello world ;"
document.onreadystatechange = function(){
if(document.readyState == "complete"){
document.getElementById("area").addEventListener("keypress" , public_mode);
}
}
function public_mode(event){
var key = event.key;
if(key === "Enter") {
event.preventDefault();
sendMessage(this);
}
}
function sendMessage(area){
console.log(area.innerHTML);
area.innerHTML = "";
}Run Code Online (Sandbox Code Playgroud)
#area {
padding: 5px;
width: 170px;
border:1px solid black;
}Run Code Online (Sandbox Code Playgroud)
<div id = "area" contenteditable="true">How to get it in dec - 😀</div>Run Code Online (Sandbox Code Playgroud)
我在使用 unicode 将字符串中的表情符号替换为字符串时遇到问题。
例如:
我有字符串:
const str = "My string is with emoji "
我需要将此字符串转换为
const str = "My string EMOJI UNICODE is with emoji EMOJI UNICODE"
表情符号 unicode 应如下所示:[e-1f60e]。因为我有将带有 unicode 的字符串转换为带有表情符号的字符串的函数:
function convertEmoji(str) {
return str.replace(/\[e-([0-9a-fA-F]+)\]/g, (match, hex) =>
String.fromCodePoint(Number.parseInt(hex, 16))
);
}
console.log(convertEmoji('string [e-1f60e] sadfsadfsadf')); // "string sadfsadfsadf"
Run Code Online (Sandbox Code Playgroud) '\xe2\x9d\x8c'[0] === '\xe2\x9d\x8c' // true\n'\xe2\x9c\x94\xef\xb8\x8f'[0] === '\xe2\x9c\x94\xef\xb8\x8f' // false\n'\xe2\x9c\x94\xef\xb8\x8f'[0] === '\xe2\x9c\x94' // true\n\nRun Code Online (Sandbox Code Playgroud)\n我怀疑它与 unicode 相关,但想准确了解发生了什么以及如何正确比较这些字符。为什么 '\xe2\x9c\x94\xef\xb8\x8f' 的处理方式与 '\xe2\x9d\x8c' 不同?
\n我在这个简单的字符计数中遇到了它
\n'\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c'.split('').filter(e => e === '\xe2\x9d\x8c').length // 2\n'\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c'.split('').filter(e => e === '\xe2\x9c\x94\xef\xb8\x8f').length // 0\nRun Code Online (Sandbox Code Playgroud)\n