php – HTML5和神秘的charset

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – HTML5和神秘的charset脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我在SO的第一篇文章,所以要温柔.

我目前正在开发一个利用新的HTML5 target.result的Web应用程序.这允许我阅读文本文件内容,而无需上传任何东西到服务器.

我遇到的问题是关于charset.因此,通常通过页面本身生成Web内容作为博客文章,评论或符合该页面的charset和数据库配置的任何内容.但是,这个新的HTML5功能允许我们在不知道相关文档的原始字符集或格式的情况下获取文本文件内容.

在数据被ajax发布之前对数据进行编码是有意义的,所以我尝试了许多不同的方法将文本转换为utf-8以及通过各种dataTyPEs.我已经完成了整个chartset之路,htaccess,Meta,content-type.

毫不奇怪,很多人发现编码的整个过程,使用不同的字符集,ASCII,不同的语言和ajax数据类型解码URI这样的痛苦.

我认为社区可以从一个解决方案中受益,该解决方案可以从任何类型的文本文档获取文本,无论字符串或格式如何,以任何语言显示,并通过原始形式的ajax请求响应以及utf-8的额外奖励显示它.没有人可以阅读的怪异符号,最终结束那些钻石问号.

这是我现在所处位置的一个例子.

复制这篇新闻文章News Article

…并将其粘贴在此处:swiss converter tool

无论我使用什么配置,我都无法在底部输出中正确显示撇号,似曾经有人吗?

谷歌如何用谷歌翻译解决这个问题?

编辑:值得注意的是,abc新闻和瑞士工具转换器的字符集都是utf-8.你可以清楚地看到,从utf-8到utf-8的转换也给出了奇怪的符号,即使它们是完全相同的字符集.

EDIST:2好的,所以我设法加速了一个快速原型并将其上传到远程服务器.你可以在babblingo访问它

这是通过ajax发布文本的javascript:

function handleFileSelect(evt) {

evt.stopPRopagation();
evt.preventDefault();

VAR files = evt.datatransfer.files;

for (var i = 0,f; f = files[i]; i++) {
    var reader = new FileReader();
    reader.onload = (function(theFile) {
        return function(e) {
            var insertText = e.target.result;
            var fields = 'text=' + insertText;
            $.ajax({
                type: "POST",url: "ajax.PHP?action=adDFile",data: fields,dataType: "json",complete: function (data) {
                    if (data.responseJSON.message) {
                        $( "#modal-message h4" ).replaceWITh( "<h4 class='modal-title text-center'>"+data.responseJSON.message+"</h4>" );
                    }
                    if (data.responseJSON.report) {
                        $( "#report_Box" ).replaceWith( '<div id="report_Box">'+data.responseJSON.report+'</div>' );
                    }
                    if (data.responseJSON.import) {
                        $('#output_Box').replaceWith('<div id="output_Box" class="hidden-print">'+data.responseJSON.import+'</div>');
                    }
                    $('#modal-message').modal('show');
                    setTimeout(function() {$('#modal-message').modal('hide');},3000);
                }
            });


        };
    })(f);

    reader.readAsText(f);
}
}

解决方法

由于没有人回答过这个问题,我将根据类似的工作找到答案,我已经完成了对不了解utf-8但仍然生成html的遗留应用程序的即时翻译.

它只涉及创建一个映射表,从有问题的字符代码到它的html实体等价. ñ=> &amp;安培; ntilde;例如.这是一些示例代码.

function createEntities(source) {
    var map = [
       { key:"á",value: "<b>&aacute;</b>"},{ key:"ñ",value: "<b>&ntilde;</b>"},{ key:"ó",value: "<b>&oacute;</b>" },{ key:"'",value: "<b>&apos;</b>" }
    ];
    var target = source;
    for ( prop in map ) {
       var pair = map[prop];
       target = target.replace(pair.key,pair.value)
    }
    return target;
}

这是jsFiddle一个证明.当然,您需要设置适当的映射.

脚本宝典总结

以上是脚本宝典为你收集整理的php – HTML5和神秘的charset全部内容,希望文章能够帮你解决php – HTML5和神秘的charset所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。