Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何放置日本国旗字符🇯🇵;一串?_Javascript_Unicode_Emoji - Fatal编程技术网

Javascript 如何放置日本国旗字符🇯🇵;一串?

Javascript 如何放置日本国旗字符🇯🇵;一串?,javascript,unicode,emoji,Javascript,Unicode,Emoji,我们正在尝试使用unicode转义(以避免在源代码中使用unicode)创建一个国家国旗列表。我们使用字符来表示标志,以允许用户在纯文本内容中复制/粘贴标志,并避免传输图像文件和死链接的带宽 如果我还记得,在Java中,在处理特殊字符时必须使用特殊的unicode转义序列。所以我认为JS也是一样的。我查找了日本国旗的代码评论太小太过贴子: <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBSRXhpZgAASUk

我们正在尝试使用unicode转义(以避免在源代码中使用unicode)创建一个国家国旗列表。我们使用字符来表示标志,以允许用户在纯文本内容中复制/粘贴标志,并避免传输图像文件和死链接的带宽


如果我还记得,在Java中,在处理特殊字符时必须使用特殊的unicode转义序列。所以我认为JS也是一样的。我查找了日本国旗的代码评论太小太过贴子:

<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBSRXhpZgAASUkqAAgAAAABAGmHBAABAAAAGgAAAAAAAAABAIaSAgAdAAAALAAAAAAAAABMRUFEIFRlY2hub2xvZ2llcyBJbmMuIFYxLjAxAGf/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAUAB4DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2uzsrZrOBzbxEmJScoPTrXHeI/HuiaDfNZR6cl3cRj95tVVVT6Z9fwrurMZ063/64r/Kvnjxjot7o/iK9+1xMI5pnlimx8rqxJ6+vPNc2KqThFOB7WR4PD4uu44h7LRXtc9j8K+I9F8UwSNb2scc8WN8EiLuUHvx1FaGuW8EVijRQxo3mAEqoBwQa84+E2iXw1abVniaK0ERiVmGPMJIPHqBjrXpniH/kHx/9dR/I1dCcp005bnNmuHpYfFSp0XeK/DyM2HXbqGFI1SIhFCgkHOB+NOfXriQYe3tmHuhP9aKK2POvYVfEF0owsNuB6BT/AI1XvdVnvoRFKkaqG3fKD7+/vRRQB//Z" />


评论太少太多,请发布以下内容:

<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBSRXhpZgAASUkqAAgAAAABAGmHBAABAAAAGgAAAAAAAAABAIaSAgAdAAAALAAAAAAAAABMRUFEIFRlY2hub2xvZ2llcyBJbmMuIFYxLjAxAGf/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAUAB4DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2uzsrZrOBzbxEmJScoPTrXHeI/HuiaDfNZR6cl3cRj95tVVVT6Z9fwrurMZ063/64r/Kvnjxjot7o/iK9+1xMI5pnlimx8rqxJ6+vPNc2KqThFOB7WR4PD4uu44h7LRXtc9j8K+I9F8UwSNb2scc8WN8EiLuUHvx1FaGuW8EVijRQxo3mAEqoBwQa84+E2iXw1abVniaK0ERiVmGPMJIPHqBjrXpniH/kHx/9dR/I1dCcp005bnNmuHpYfFSp0XeK/DyM2HXbqGFI1SIhFCgkHOB+NOfXriQYe3tmHuhP9aKK2POvYVfEF0owsNuB6BT/AI1XvdVnvoRFKkaqG3fKD7+/vRRQB//Z" />


问题是,所讨论的字符必须表示为Unicode代理。您可以使用以下函数获得正确的编码值:

function toUTF16(codePoint) {
    var TEN_BITS = parseInt('1111111111', 2);
    function u(codeUnit) {
        return '\\u'+codeUnit.toString(16).toUpperCase();
    }

    if (codePoint <= 0xFFFF) {
        return u(codePoint);
    }
    codePoint -= 0x10000;

    // Shift right to get to most significant 10 bits
    var leadSurrogate = 0xD800 + (codePoint >> 10);

    // Mask to get least significant 10 bits
    var tailSurrogate = 0xDC00 + (codePoint & TEN_BITS);

    return u(leadSurrogate) + u(tailSurrogate);
}
函数toUTF16(代码点){
变量十位=parseInt('1111111',2);
功能u(代码单元){
返回'\\u'+codeUnit.toString(16.toUpperCase();
}
如果(码点>10);
//掩码以获得最低有效10位
var TAILSURRONATE=0xDC00+(码点和十位);
返回u(引导代理)+u(引导代理);
}
样本:

> toUTF16(0x1f1ef)
"\uD83C\uDDEF" // this is 'I know it's an old question. Though, the following implementation might be useful for future readers. Solution runs in ECMAScript 2015.

// Create flag from country code
function getCountryFlag(cc) {
  // Mild sanity check.
  if (cc.length !== 2)
    return cc;

  // Convert char to Regional Indicator Symbol Letter
  function risl(chr) {
    return String.fromCodePoint(0x1F1E6 - 65 + chr.toUpperCase().charCodeAt(0));
  }

  // Create RISL sequence from country code.
  return risl(cc[0]) + risl(cc[1]);
}

// Test
document.write(getCountryFlag('jp'));
>toUTF16(0x1f1ef)

“\uD83C\uDDEF”//this is'问题在于所讨论的字符必须表示为Unicode代理。您可以使用以下函数获得正确的编码值:

function toUTF16(codePoint) {
    var TEN_BITS = parseInt('1111111111', 2);
    function u(codeUnit) {
        return '\\u'+codeUnit.toString(16).toUpperCase();
    }

    if (codePoint <= 0xFFFF) {
        return u(codePoint);
    }
    codePoint -= 0x10000;

    // Shift right to get to most significant 10 bits
    var leadSurrogate = 0xD800 + (codePoint >> 10);

    // Mask to get least significant 10 bits
    var tailSurrogate = 0xDC00 + (codePoint & TEN_BITS);

    return u(leadSurrogate) + u(tailSurrogate);
}
函数toUTF16(代码点){
变量十位=parseInt('1111111',2);
功能u(代码单元){
返回'\\u'+codeUnit.toString(16.toUpperCase();
}
如果(码点>10);
//掩码以获得最低有效10位
var TAILSURRONATE=0xDC00+(码点和十位);
返回u(引导代理)+u(引导代理);
}
样本:

> toUTF16(0x1f1ef)
"\uD83C\uDDEF" // this is 'I know it's an old question. Though, the following implementation might be useful for future readers. Solution runs in ECMAScript 2015.

// Create flag from country code
function getCountryFlag(cc) {
  // Mild sanity check.
  if (cc.length !== 2)
    return cc;

  // Convert char to Regional Indicator Symbol Letter
  function risl(chr) {
    return String.fromCodePoint(0x1F1E6 - 65 + chr.toUpperCase().charCodeAt(0));
  }

  // Create RISL sequence from country code.
  return risl(cc[0]) + risl(cc[1]);
}

// Test
document.write(getCountryFlag('jp'));
>toUTF16(0x1f1ef)

“\uD83C\uDDEF”//这是“我知道这是个老问题。不过,以下实现可能对未来的读者有用。解决方案在ECMAScript 2015中运行

//从国家代码创建标志
函数getCountryFlag(cc){
//轻度精神检查。
如果(cc.length!==2)
返回cc;
//将字符转换为区域指示器符号字母
函数risl(chr){
返回字符串.fromCodePoint(0x1F1E6-65+chr.toUpperCase().charCodeAt(0));
}
//从国家代码创建RISL序列。
返回risl(cc[0])+risl(cc[1]);
}
//试验

document.write(getCountryFlag('jp'))我知道这是个老问题。不过,以下实现可能对未来的读者有用。解决方案在ECMAScript 2015中运行

//从国家代码创建标志
函数getCountryFlag(cc){
//轻度精神检查。
如果(cc.length!==2)
返回cc;
//将字符转换为区域指示器符号字母
函数risl(chr){
返回字符串.fromCodePoint(0x1F1E6-65+chr.toUpperCase().charCodeAt(0));
}
//从国家代码创建RISL序列。
返回risl(cc[0])+risl(cc[1]);
}
//试验

document.write(getCountryFlag('jp'))浏览器的字体可能没有这些unicode字符。这对潜在用户来说也是一个问题……我想你应该使用🇯🇵yep,我不认为这是我的浏览器,如果你想避免图像使用@vladkras:那么我必须传输3倍于使用普通图像时的数据量,并且失去复制/粘贴能力。我们在目标浏览器上测试了这些标志,这些标志可以正常工作。对于看不到字符的用户,这里有一个解决方案。您浏览器的字体可能没有这些unicode字符。这对潜在用户来说也是一个问题……我想你应该使用🇯🇵yep,我不认为这是我的浏览器,如果你想避免图像使用@vladkras:那么我必须传输3倍于使用普通图像时的数据量,并且失去复制/粘贴能力。我们在目标浏览器上测试了这些标志,它们可以正常工作。这里有一个给看不到字符的人的提示。@Dog你为什么这么认为?看看你的示例,它是一个不同的字符(不是日本标志)。@Dog你描述的序列(
1f1f5
)是两个独立的unicode字符,我得到的序列应该是一种特殊的形式,在javascript渲染后显示为标志。你好像要把那个序列的一半分成另一个序列?这是关于两个独立的字符的吗?@Dog您作为注释附加的图片是一个表情符号,您的浏览器会动态地将这些字符转换为表情符号。Unicode中没有日本国旗
字符。@Dog你为什么这么认为?看看你的示例,它是一个不同的字符(不是日本国旗)。@Dog你描述的序列(
1f1ef 1F5
)是两个独立的unicode字符,我得到的序列应该是一种特殊的形式,在javascript渲染后显示为标志。你好像要把那个序列的一半分成另一个序列?这是关于两个独立的字符的吗?@Dog您作为注释附加的图片是一个表情符号,您的浏览器会动态地将这些字符转换为表情符号。Unicode中没有日本国旗
字符。