首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将html-input转换为正确的编码

将html-input转换为正确的编码
EN

Stack Overflow用户
提问于 2015-03-11 17:15:36
回答 1查看 989关注 0票数 0

我有一个html-form和一个html-input-field。输入是通过剪贴板从其他程序复制的。有时复制的文本不是utf-8,而是ansi (用notepad++测试)。然后,像ü这样的变音被复制为ü。由于我不想每次都更改剪贴板文本的编码(使用i.e.notepad++),因此我希望在解析和拆分输入文本时直接使用javascript完成此操作。

有没有办法在不实现自己的函数的情况下做到这一点(这将是我为最常见的元音做的下一件事)?

EN

回答 1

Stack Overflow用户

发布于 2015-03-11 17:43:00

从互联网上窃取以下内容:

代码语言:javascript
复制
//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/geral/utf-8 [rev. #1]

var UTF8 = {
    encode: function(s){
        for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
            s[i] = (c = s[i].charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s[i]
        );
        return s.join("");
    },
    decode: function(s){
        for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i < l;
            ((a = s[i][c](0)) & 0x80) &&
            (s[i] = (a & 0xfc) == 0xc0 && ((b = s[i + 1][c](0)) & 0xc0) == 0x80 ?
            o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s[++i] = "")
        );
        return s.join("");
    }
};

然后您可以添加您的输入:

代码语言:javascript
复制
<input type="text" id="test">

并监听PASTE事件,几毫秒后(否则您将得到"“as .val),您可以用解码后的值替换整个输入值:

代码语言:javascript
复制
$('#test').on('paste', function(e) {
  var controller = $(this);
  setTimeout(function(){
    controller.val(UTF8.decode(controller.val()));
  },10);
});

Codepen:

http://codepen.io/anon/pen/GgYZeb

请注意,它只侦听PASTE事件。如果您感兴趣,还可以添加其他事件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28982487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档