&#x开头的是什么编码?
web 其他 2018-10-30 3367 0
关于本站

“最难不过坚持”

本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作

有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339

6281116 2594 39
最新评论
https://jueru.net/
评 留言
:weixiao:
评 留言
:shuijiao: :weiqu: :zhenbang: :leng:
评 留言
:yiwen: :yiwen: :yiwen: :yiwen:
评 EasySass: could not generate CSS file. See Output panel for details.
这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
评 TP6模型事件-查询后onAfterRead不好用
文章标签更多
ThinkPHP (254)
Mysql (58)
DedeCms (33)
jQuery (67)
证件照 (1)
setInc (4)
setDec (4)
onclick (5)
打开边栏(ESC) 关闭边栏(ESC)

样式:网上

首先说明,这不是编码

可以用Unicode编码转换工具转换成中文,在线工具http://tool.chinaz.com/tools/unicode.aspx

网站被攻击了,网页中存在类似信息,转成中文后,一般都是黄赌毒的东西


以下是原答案

在使用readability的api提取网页内容的时候点这里看-readability-网页内容提取利器,中文内容都是&#x开头的一堆乱码似的东西。但保存成网页文件后,浏览器是可以正常显示的~

故搜索了一下,知乎上有个回答挺好,在此转一下:

形如

&name;
&#dddd;
&#xhhhh;

的一串字符是 HTML、XML 等 SGML 类语言的转义序列(escape sequence)。它们不是「编码」。以 HTML 为例,这三种转义序列都称作 character reference:第一种是 character entity reference,后接预先定义的 entity 名称,而 entity 声明了自身指代的字符。
后两种是 numeric character reference(NCR),数字取值为目标字符的 Unicode code point;以「&#」开头的后接十进制数字,以「&#x」开头的后接十六进制数字。

从 HTML 4 开始,NCR 以 Unicode 为准,与文档编码无关。「中国」二字分别是 Unicode 字符 U+4E2D 和 U+56FD,十六进制表示的 code point 数值「4E2D」和「56FD」就是十进制的「20013」和「22269」。所以

我给加了空格,不然网页会自动渲染成文字...
&#x 4e2d;&#x 56fd;
&# 20013;&# 22269;

这两种 NCR 写法都会在显示时转换为「中国」二字。NCR 可以用于转义任何 Unicode 字符,而 character entity reference 很受限,参见 HTML 4 和 HTML5 中已有定义的字符列表:
Character entity references in HTML 4
Character entity references in HTML5

另外可以参考这篇文章 使用&#x 3000等空格实现最小成本中文对齐


知道了是什么,现在来看怎么把它转回成中文呢?
Python实现

要将16进制字符转成中文可以用如下方法

# Pythone3
b'\u4e2d\u6587'.decode('unicode-escape')

# Python2
'\u4e2d\u6587'.decode('unicode-escape')

故需要将&#xhhhh;做替换,再用上面的方式进行转换。对于特殊符号(如加减乘除),会显示为&#xhh,后面只有两位,在转换之前,需要提前补全。具体可参看readability-网页内容提取利器

Java实现

引用此处:http://xuelianbobo.iteye.com/blog/2155114

package com.xue.tools;  
  
import java.io.BufferedWriter;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.net.MalformedURLException;  
import java.net.URL;  
import java.util.List;  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
  
import org.dom4j.DocumentException;  
import org.htmlcleaner.HtmlCleaner;  
import org.htmlcleaner.TagNode;  
import org.htmlcleaner.XPatherException;  
  
public class Test {  
  
    public static void main(String[] args) throws IOException, DocumentException, XPatherException {  
        // 定义正则表达式来搜索中文字符的转义符号  
        Pattern compile = Pattern.compile("&#.*?;");  
        // 测试用中文字符  
        String sourceString = "C集团天c津大唐国际盘山发电有限责任公司";  
        Matcher matcher = compile.matcher(sourceString);  
        // 循环搜索 并转换 替换  
        while (matcher.find()) {  
            String group = matcher.group();  
            // 获得16进制的码  
            String hexcode = "0" + group.replaceAll("(&#|;)", "");  
            // 字符串形式的16进制码转成int并转成char 并替换到源串中  
            sourceString = sourceString.replaceAll(group, (char) Integer.decode(hexcode).intValue() + "");  
        }  
        System.out.println(sourceString);  
    }  
  
}

补充:
后来想到,其实可以把这当成html来解析啊,然后就有了:

text = '&#x 4e2d'
lxml.html.fromstring(text).text

版权声明:本篇文章来源于网络。 来源链接

相关推荐
Uncaught (in promise) 的解决方法,可能原因
其他 | 2022-06-25 1076973
Uncaught (in promise) 的解决方法,可能原因;仅仅只是一种参考原因 我是因为copy的项目直接修改的,结果一直报错 Uncaught (in promise),检查发现接口请求数据已经正常返回,后来经过排查发现是在拦截器里面别人的判断是response.data.status !== 1 就算请求失败,从而Promi...
钉钉怎样设置快捷键?钉钉系统设置在哪
其他 | 2019-03-20 20938
钉钉怎样设置快捷键? 1,打开电脑端钉钉面板,点击右上角自己的头像,下拉菜单中点击系统设置 2,进入系统设置面板,下拉滚动条,找到快捷键设置
评论:0条
评论加载中...
发表评论