小编Kar*_*l S的帖子

如何在 Java 中解码 XHTML 和/或 HTML5 实体?

我有一些包含XHTML字符实体的字符串:

"They're quite varied"
"Sometimes the string ∈ XML standard, sometimes ∈ HTML4 standard"
"Therefore -> I need an XHTML entity decoder."
"Sadly, some strings are not valid XML & are not-quite-so-valid HTML <- but I want them to work, too."
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来解码实体?(我正在使用 Java)

我目前正在StringEscapeUtils.unescapeHtml4(myString.replace("&apos;", "\'"))用作临时黑客。可悲的是,org.apache.commons.lang3.StringEscapeUtilsunescapeHtml4unescapeXML,但没有unescapeXhtml

编辑:我确实想处理无效的 XML,例如我想要“&&xyzzy;” 解码为“&&xyzzy;”

编辑:我认为 HTML5 具有与 XHTML 几乎相同的字符实体,所以我认为 HTML 5解码器也可以。

java xhtml html-entities xml-entities

6
推荐指数
1
解决办法
1141
查看次数

什么是交易没有在SHOW ENGINE INNODB状态中启动?

以下是"SHOW ENGINE INNODB STATUS"的几行回应;


TRANSACTIONS
------------
Trx id counter 58EC54C6
Purge done for trx's n:o < 58EC54C3 undo n:o < 0
History list length 2420
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 58EC51E6, not started
MySQL thread id 520131, OS thread handle 0x7f0db930e700, query id 24011015 108.89.56.87 xyz
---TRANSACTION 58EC527E, not started
MySQL thread id 520061, OS thread handle 0x7f0dbb596700, query id 24011370 108.89.56.87 xyz
---TRANSACTION 58EC53AC, not started
MySQL thread id 520065, OS thread handle 0x7f0dbb28a700, query id 24012094 …
Run Code Online (Sandbox Code Playgroud)

mysql innodb database-deadlocks

5
推荐指数
1
解决办法
7796
查看次数

如何从命令提示符下tesseract同一文件夹中的多个文件?

我知道如何使用OS X上的终端在同一目录中Tesseract多个文件。

for i in *.tif ; do tesseract $i outtext;  done;
Run Code Online (Sandbox Code Playgroud)

在运行Windows的计算机上的命令提示符下,是否有人对如何执行此操作有建议?

ocr cmd tesseract batch-file command-prompt

5
推荐指数
2
解决办法
7409
查看次数

防止在不使用索引的情况下插入重复项

我有一个users大致像这样的MariaDB表:

id INT PRIMARY KEY AUTOINCREMENT,
email_hash INT, -- indexed
encrypted_email TEXT,
other_stuff JSON
Run Code Online (Sandbox Code Playgroud)

出于隐私原因,我无法将实际的电子邮件存储在数据库中。

用于电子邮件的加密不是一对一的,即可以将一封电子邮件加密为许多不同的加密表示形式。这使得仅仅在encrypted_email列上添加索引毫无意义,因为它永远不会捕获重复项。

数据库中已经有数据,更改加密方法或散列方法毫无疑问。

email_hash列也不能具有唯一索引,因为它应该是一个短哈希,以加快重复检查的速度。它不能太独特,因为它将使所有隐私保证无效。

如何防止带有相同电子邮件的两个条目出现在数据库中?

另一个限制:LOCK TABLE根据文档https://mariadb.com/kb/en/library/lock-tables/,我可能无法使用,

LOCK TABLES使用Galera群集时不起作用。与Galera一起使用时,您可能会遇到崩溃或锁定的情况。

LOCK TABLES隐式提交活动事务(如果有)。另外,启动事务总是会释放通过获取的所有表锁LOCK TABLES

(我确实使用Galera,并且确实需要事务,因为插入新用户会伴随其他一些插入和更新)


由于后端应用程序服务器(整体式)只要不存储个人信息即可(例如,用于发送电子邮件,验证登录名等)处理个人信息,因此我在应用程序中进行重复检查。

目前,我正在执行以下操作(伪代码):

perform "START TRANSACTION"
h := hash(new_user.email)
conflicts := perform "SELECT encrypted_email FROM users WHERE email_hash = ?", h
for conflict in conflicts :
    if decrypt(conflict) == new_user.email :
        perform "ROLLBACK"
        return DUPLICATE
e := encrypt(new_user.email)
s := …
Run Code Online (Sandbox Code Playgroud)

mysql sql indexing mariadb

5
推荐指数
1
解决办法
253
查看次数

将Unicode Unicode代码点保存为UTF-8文件

上下文

Debian 64bits尝试将int(例如233)写入文件并使其文本打印为"é".

我无法理解如何编写一个utf8等效字符,例如"é"或任何比char类型更宽的UTF-8字符.该文件应该是人类可读的,以通过网络发送.

我的目标是将int写入文件并获得其utf8等效项.

我不知道我在做什么.

FILE * dd = fopen("/myfile.txt","w");
fprintf(dd, "%s", 233); /* The file should print "é" */
fclose(dd);
Run Code Online (Sandbox Code Playgroud)

谢谢

更新:

根据Biffen的评论,这里是写"E9"("é"的十六进制值)的另一个代码片段;

int p = 233;
char r[5];
sprintf(r,"%x",p);
printf("%s\n",r);
fwrite(r,1,strlen(r),dd);
fclose(dd);
Run Code Online (Sandbox Code Playgroud)

如何将其转换为"é"?

更新最终工作代码:

UFILE * dd = u_fopen("/myfile.txt","wb", NULL, NULL);
UChar32 c = 233;
u_fputc(c,dd);
u_fclose(dd);
Run Code Online (Sandbox Code Playgroud)

c io utf-8

3
推荐指数
1
解决办法
629
查看次数

如何用重音词(西班牙语)解析HTML页面而不丢失它们?

我正在阅读一个包含文字重音词(西班牙语)的HTML网页:

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>Web page</title>
<body>
<p>Título</p>
<p>Año</p>
<p>Ángel</p>
<p>¿por qué nos vamos?</p>
</body>
Run Code Online (Sandbox Code Playgroud)

我正在使用HXT:

...
let doc = readDocument [ withValidate no
                       , withInputEncoding iso8859_1
                       , withParseHTML yes
                       , withWarnings no
                       , withEncodingErrors no
                       , withCurl []] url
...
Run Code Online (Sandbox Code Playgroud)

使用选项

withInputEncoding utf8

丢弃这些字符,得到以下字样:Ttulo,Ao,ngel,por qunos vamos? 使用选项

withInputEncoding iso8859_1

将这些字符转换为字符串,得到结果如:Rom\225ntica,Man\180s,H\233ctor.其中\ 225,\ 180\ 233字符串 …

haskell character-encoding hxt

2
推荐指数
1
解决办法
112
查看次数