最低限度的文本清理

2024-03-24

在接受、存储、处理和显示 Unicode 文本的应用程序中(为了讨论的目的,我们假设它是一个 Web 应用程序),哪些字符应该always从传入文本中删除?

我能想到一些,大部分列在C0 和 C1 控制代码维基百科文章 http://en.wikipedia.org/wiki/C0_and_C1_control_codes:

  1. 范围0x00-0x19(主要是控制字符),不包括0x09 (tab), 0x0A(LF),和0x0D (CR)

  2. 范围0x7F-0x9F(更多控制字符)

可以安全使用的字符范围accepted如果知道的话就更好了。

还有其他级别的文本过滤——可能会规范化具有多种表示形式的字符、替换不间断字符以及删除零宽度字符——但我主要对基础知识感兴趣。


参见W3XML 和其他标记语言中的 Unicode http://www.w3.org/TR/unicode-xml/笔记。它将一类字符定义为“不鼓励在标记中使用”,我肯定会在大多数网站上过滤掉这些字符。它特别包括以下字符:

  • U+2028–9 是时髦的换行符,如果您尝试在字符串文字中使用它们,它们会让 JavaScript 感到困惑;

  • U+202A–E 是双向控制代码,狡猾的用户可以插入这些代码,以使文本在某些浏览器中看起来向后运行,甚至在给定的 HTML 元素之外;

  • 语言覆盖控制代码也可能具有元素之外的范围;

  • BOM.

此外,您可能希望过滤/替换在 Unicode 中根本无效的字符(U+FFFF 等),并且如果您使用的是原生支持 UTF-16 的语言(例如 Java、Python) Windows),任何不形成有效代理对的代理字符(U+D800–U+DFFF)。

范围 0x00-0x19(主要是控制字符),不包括 0x09(制表符)、0x0A (LF) 和 0x0D (CR)

可以说(尤其是对于 Web 应用程序),也会丢失 CR,并将制表符变成空格。

范围0x7F-0x9F(更多控制字符)

是的,远离那些,除非人们可能真的这么想。 (SO 曾经允许它们,这允许人们发布被错误解码的字符串,这有时对于诊断 Unicode 问题很有用。)对于大多数网站,我认为你不会想要它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最低限度的文本清理 的相关文章

  • 关于Java中trim()方法的查询

    我之前提出了一个问题 但遭到了严厉的批评 所以我在这里再次提出 更简单 并重新措辞以吸引那些可能担心我之前提出问题的方式的人 背景 我正在解析一些 HTML 以获取信息 我将所有内容隔离在一系列行中 但我希望抓取的内容以及后面的一堆空格 为
  • 如何删除字符串中的所有前导零

    如果我有一个字符串 00020300504 00000234892839 000239074 我怎样才能去掉前导零 这样我就只有这个 20300504 234892839 239074 请注意 上面的数字是随机生成的 ltrim http
  • 将字节字符串转换为 Base64 编码的字符串(输出不是字节字符串)

    我想知道是否可以将从读取文件中获得的字节字符串转换为字符串 所以type output str 到目前为止我在谷歌上找到的都是这样的答案如何对 PNG 图像进行 Base 64 编码以便在 CSS 文件的 data uri 中使用 http
  • 结构中字符串的管理

    我知道字符串的长度是可变的 因此它们需要内存中的可变空间来存储 当我们在 a 中定义一个字符串项时struct the struct的大小的长度将是可变的 较旧的语言通过使用固定长度的字符串来管理此问题 但是 C 中没有办法定义固定长度的字
  • 在 PostgreSQL 中获取 JSONB 的精简版本

    如何获取紧凑型JSONB from PostgreSQL 获取时我得到的只是空格 SELECT data FROM a table WHERE id 1 data is JSONB column unique bla bla foo bar
  • 如何在 UNIX / Linux 操作系统下使用 sed 替换带有换行符 (\n) 的模式?

    我有一个 txt 文件 其中包含 Some random text here This file has multiple lines Should be one line I use sed q N s n sl g t q file1
  • PHP 中字符串中的类常量

    我的阅读手册 http www php net manual en language types string php language types string parsing 标题 字符串访问和按字符修改 之前的部分 是 您可以在字符串
  • 第一个字母改为大写

    是否有其他版本可以使每个字符串的第一个字母大写 并且对于 flac perl 也使用 FALSE name lt hallo gsub alpha U 1 name perl TRUE 你可以尝试这样的事情 name lt hallo pa
  • 为什么我收到 string does not name a type 错误?

    game cpp include
  • 在某些情况下,直接访问字符串的后备数组是否合理?

    我正在致力于优化文本处理软件 其中经常使用以下类 class Sentence private final char textArray private final String textString public Sentence Str
  • perl生成字符串来匹配正则表达式

    我尝试找到一种方法来生成与正则表达式匹配的字符串 例如以下正则表达式 A Z 6 6 A Z2 9 A NP Z0 9 A Z0 9 3 3 0 1 我尝试过 Cpan 上的一些 perl 模块不起作用 gt 字符串 随机 gt 正则表达式
  • Java 支持多行字符串吗?

    来自 Perl 我肯定缺少在源代码中创建多行字符串的 here document 方法 string lt lt EOF create a three line string text text text EOF 在 Java 中 当我从头
  • 如何在 Fortran 90 中迭代包含数字、单词和空格的字符串?

    文件说明 STL文件由以下部分组成 solid
  • 当目标是查找某个字符串的所有出现情况时,KMP 最坏情况的复杂度是多少?

    我还想知道哪种算法在查找另一个字符串中所有出现的字符串时具有最坏情况的复杂性 博耶 摩尔算法似乎具有线性时间复杂度 KMP 算法在查找字符串中所有出现的模式时具有线性复杂度 如 Boyer Moore 算法1 如果您尝试在 aaaaaaaa
  • 从 Kotlin 中的字符串中删除字符

    我正在尝试创建一个使用 Kotlin 中的字符串的 Android 计算器 如果逗号 或负数 已经包含一个 我不知道如何删除它 这是我的代码 它正确添加逗号 但如果用户再次单击则不会删除它 if buClickValue contains
  • 使用 string.whitespace 删除 Python 中的空格

    Python 的 string whitespace 很棒 gt gt gt string whitespace t n x0b x0c r 如何在不手动输入 t n 等正则表达式的情况下将其与字符串一起使用 例如 它应该能够转动 请不要伤
  • CSS - 将文本保留在图像下方

    我正在尝试创建一个简单的图片库 有人告诉我使用 float left 但是当我这样做时 页脚中的所有文本都会射到第一张图像 我已经搜索了大约一个小时试图找到解决方案 但我找不到任何东西 我尝试过使用边距 边框 不同的对齐方式和各种不同的小东
  • 数据库、表和列命名约定? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 每当我设计数据库时 我总是想知道是否有命名数据库中项目的最佳方法 我经常问自己以下问题 表名应该是复数吗 列名应该是单数吗 我应该为表或列添加前
  • Lockfree 标准集合和教程或文章

    有人知道用于无锁常用数据类型的实现 即源代码 的好资源吗 我正在考虑列表 队列等 锁定实现非常容易找到 但我找不到无锁算法的示例以及 CAS 的工作原理以及如何使用它来实现这些结构 查看 Julian M Bucknall 的博客 他 详细
  • 如何从RichTextBox中获取显示的文本?

    如何获得显示的RichTextBox 中的文本 我的意思是 如果 RichTextBox 滚动到末尾 我只想接收那些对我来说可见的行 P S 获得第一个显示的字符串就足够了 您想使用 RichTextBox GetCharIndexFrom

随机推荐

  • Qt——将事件传递给多个对象?

    我基本上有3层 Window gt Scene gt View 每个人都需要处理一个mouseMove事件不妨碍其他人 不过 似乎只有最小的孩子才能参加该活动 我希望我可以处理该事件然后致电event gt ignore 将事件传递回堆栈
  • 如何处理 Google Cloud Functions 中的机密?

    这里的常见做法是什么 好像没有提供工具gcloud 我现在正在从本地计算机部署功能 因此我可以对秘密进行硬编码 但这似乎不合适 另外 CI CD 怎么样 在这种情况下 我需要将秘密作为环境变量传递 这甚至可能吗 您可以使用秘密经理 http
  • 代码格式化:如何将多行代码与特殊字符对齐?

    IDEA 或其插件之一能够将代码与特殊字符对齐吗 我的意思是这样代码 Map name gt Peter age gt 27 company gt Foobar 变换为 Map name gt Peter age gt 27 company
  • 是否有任何回调或任何东西(事件或nodeInfo中的任何参数)来知道辅助功能服务(TalkBack)已完成阅读?

    我有一个应用程序要求在列表视图中宣布文本 列表视图项在运行时添加 我必须一一宣布 我在谷歌和android文档中搜索 但我无法到达那里 请帮助我 如何知道无障碍服务读完文本 谢谢 简单的答案 不要这样做 这是愚蠢的 只需使用您可用的辅助功能
  • 如果是十进制值,则转换为两位小数并且将点分隔值转换为逗号分隔

    我目前的值如下所示 30 32 5 如果存在任何小数 如第二个示例 如何将它们转换为具有两位小数 并且将点分隔符替换为逗号 转换后 上面的数字将如下所示 30 32 50 Try var num 32 5 num num toFixed 2
  • 从另一个路由调用 hapi 路由

    我对 HapiJS 还很陌生 我正在构建一个服务 其中有两条路线 route 1 和 route 2 都使用插件架构 我已将两者注册为我的清单文件中的插件 我想从 route2 调用 route1 因此 route2 取决于 route1
  • 嵌套事务-回滚场景

    A con begin B con rollback con commit B con begin con commit 在上面的代码中 我在 A 处开始一个新的数据库事务 它成功执行了一些事务 之后B 开始执行 并且它也成功执行了一些事务
  • 在头文件中使用声明

    我一直在寻找有关使用的一些说明使用声明在头文件中 我正在四处搜索 但无法完全得到我正在寻找的答案 到目前为止我的研究得出的结论是 将它们用于非全局的范围是好的 而命名空间指令则不好 我明白 至少我希望如此 所以在我的例子中我使用shared
  • 如何获取到 CGPath 的距离以进行命中测试?

    我有一个打开的 CGPath UIBezierPath 我想检测用户是否触摸它 即某个点是否在距路径一定距离内 路径是开放的 即直线 曲线 而不是形状 它可以包含直线和曲线元素 如何获得到路径的距离来进行命中测试 CGPath UIBezi
  • 如何等待matplotlib动画结束?

    考虑直接取自 Matplotlib 文档的以下代码 import numpy as np import matplotlib pyplot as plt import matplotlib animation as animation im
  • CORS 中的 POST/GET 与 PUT/DELETE

    我刚刚读过this https www w3 org Security wiki Same Origin Policy 同源策略允许使用 GET 和 POST 的跨源 HTTP 请求 方法 但拒绝源间 PUT 和 DELETE 请求 PUT
  • 使用VBA调用存储过程

    我正在使用 Access 2010 用户前端和 Microsoft SQL Server 2008 后端工作 Access 中的表都链接到 SQL Server 数据库 我有一个存储过程 它将新值 由参数提供 插入到表中 我之前问过类似的问
  • Ruby on Rails - 表情符号未保存在 MySQL 中

    我正在开发一个 Rails 应用程序 用户可以将照片上传到他们的个人资料中 每张照片都有一个标题 该标题应该支持表情符号 尽管将表的编码更改为utf8mb4并修改数据库 yml当我尝试保存标题中带有表情符号的照片时 MySQL 返回错误 字
  • ThreadStart.BeginInvoke 在 Compact 框架上抛出 NotSupportedException

    我正在一个紧凑框架项目上使用线程 并且代码如下所示 当我尝试进入 StartThreads 时 会抛出 NotSupportedException 这看起来有点奇怪 为什么异常是在调用 StartThreads 的行上抛出的 而不是在内部抛
  • purrr 将 t.test 映射到分割的 df 上

    我是新来的咕噜声 Hadley https stackoverflow com users 16632 hadley有前景的函数式编程R库 http blog rstudio org 2015 09 29 purrr 0 1 0 我正在尝试
  • 为什么人们不访问 Rspec 中的数据库?

    我经常看到Rspec中使用mock的代码 如下所示 describe GET show do it should find and assign question do question Question new Question shou
  • 如何配置 Nginx 以使用 html5 模式

    对于 angularjs 中的干净网址 我必须使用 locationProvider html5Mode true 但是当我刷新页面时 它显示 404 我读到我需要配置服务器文件 结构 html views home html about
  • Spark DataFrame:对组进行操作

    我有一个正在操作的 DataFrame 我想按一组列进行分组 并按组对其余列进行操作 正常情况下RDD land 我认为它看起来像这样 rdd map tup gt tup 1 tup 2 tup 3 tup groupByKey forE
  • document.getElementById 对于单标签 DIV 失败

    我的 HTML 页面上有 2 个 DIV div div div div 我有一个脚本可以访问网络服务并用数据填充它们 document getElementById divDebug innerHtml rawResult documen
  • 最低限度的文本清理

    在接受 存储 处理和显示 Unicode 文本的应用程序中 为了讨论的目的 我们假设它是一个 Web 应用程序 哪些字符应该always从传入文本中删除 我能想到一些 大部分列在C0 和 C1 控制代码维基百科文章 http en wiki