uTools-Manuals/docs/python/stringprep.html
2019-04-08 23:22:26 +08:00

1 line
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="body" role="main"><div class="section" id="module-stringprep"><h1><span class="yiyi-st" id="yiyi-10">6.6. <a class="reference internal" href="#module-stringprep" title="stringprep: String preparation, as per RFC 3453"><code class="xref py py-mod docutils literal"><span class="pre">stringprep</span></code></a> - Internet字符串准备</span></h1><p><span class="yiyi-st" id="yiyi-11"><strong>源代码:</strong> <a class="reference external" href="https://hg.python.org/cpython/file/3.5/Lib/stringprep.py">Lib / stringprep.py</a></span></p><p><span class="yiyi-st" id="yiyi-12">当在互联网上识别事物(例如主机名)时,通常需要比较这些识别“平等”。</span><span class="yiyi-st" id="yiyi-13">确切地,如何执行该比较可以取决于应用域,例如。</span><span class="yiyi-st" id="yiyi-14">是否应该不区分大小写。</span><span class="yiyi-st" id="yiyi-15">还可能需要限制可能的标识,以仅允许由“可打印”字符组成的标识。</span></p><p><span class="yiyi-st" id="yiyi-16"><span class="target" id="index-0"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc3454.html"><strong>RFC 3454</strong></a>定义了在互联网协议中“准备”Unicode字符串的过程。</span><span class="yiyi-st" id="yiyi-17">在将线传送到线上之前,它们用制备程序处理,之后它们具有一定的归一化形式。</span><span class="yiyi-st" id="yiyi-18">RFC定义了一组表它们可以组合成概要文件。</span><span class="yiyi-st" id="yiyi-19">每个配置文件必须定义它使用哪些表,以及<code class="docutils literal"><span class="pre">stringprep</span></code>过程的其他可选部分是配置文件的一部分。</span><span class="yiyi-st" id="yiyi-20"><code class="docutils literal"><span class="pre">stringprep</span></code>配置文件的一个示例是<code class="docutils literal"><span class="pre">nameprep</span></code>,用于国际化的域名。</span></p><p><span class="yiyi-st" id="yiyi-21">模块<a class="reference internal" href="#module-stringprep" title="stringprep: String preparation, as per RFC 3453"><code class="xref py py-mod docutils literal"><span class="pre">stringprep</span></code></a>仅公开来自RFC 3454的表。</span><span class="yiyi-st" id="yiyi-22">由于这些表非常大以将它们表示为字典或列表因此模块在内部使用Unicode字符数据库。</span><span class="yiyi-st" id="yiyi-23">模块源代码本身是使用<code class="docutils literal"><span class="pre">mkstringprep.py</span></code>实用程序生成的。</span></p><p><span class="yiyi-st" id="yiyi-24">因此,这些表作为函数公开,而不是作为数据结构。</span><span class="yiyi-st" id="yiyi-25">RFC中有两种类型的表集合和映射。</span><span class="yiyi-st" id="yiyi-26">对于集合,<a class="reference internal" href="#module-stringprep" title="stringprep: String preparation, as per RFC 3453"><code class="xref py py-mod docutils literal"><span class="pre">stringprep</span></code></a>提供“特征函数”,即</span><span class="yiyi-st" id="yiyi-27">如果参数是集合的一部分则返回true的函数。</span><span class="yiyi-st" id="yiyi-28">对于映射,它提供映射函数:给定键,它返回关联的值。</span><span class="yiyi-st" id="yiyi-29">下面是模块中所有可用功能的列表。</span></p><dl class="function"><dt id="stringprep.in_table_a1"><span class="yiyi-st" id="yiyi-30"><code class="descclassname">stringprep.</code><code class="descname">in_table_a1</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-31">确定<em>代码</em>是否在表A.1Unicode 3.2中为未分配的代码点)中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_b1"><span class="yiyi-st" id="yiyi-32"><code class="descclassname">stringprep.</code><code class="descname">in_table_b1</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-33">确定<em>代码</em>是否在表B.1(通常映射为无)中。</span></p></dd></dl><dl class="function"><dt id="stringprep.map_table_b2"><span class="yiyi-st" id="yiyi-34"><code class="descclassname">stringprep.</code><code class="descname">map_table_b2</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-35">根据表B.2映射用于NFKC的大小写折叠返回<em>代码</em>的映射值。</span></p></dd></dl><dl class="function"><dt id="stringprep.map_table_b3"><span class="yiyi-st" id="yiyi-36"><code class="descclassname">stringprep.</code><code class="descname">map_table_b3</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-37">根据表B.3(用于没有归一化的情况下折叠的映射)返回<em>代码</em>的映射值。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c11"><span class="yiyi-st" id="yiyi-38"><code class="descclassname">stringprep.</code><code class="descname">in_table_c11</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-39">确定<em>代码</em>是否在表C.1.1ASCII空格字符中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c12"><span class="yiyi-st" id="yiyi-40"><code class="descclassname">stringprep.</code><code class="descname">in_table_c12</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-41">确定<em>代码</em>是否在表C.1.2非ASCII空格字符中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c11_c12"><span class="yiyi-st" id="yiyi-42"><code class="descclassname">stringprep.</code><code class="descname">in_table_c11_c12</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-43">确定<em>代码</em>是否在表C1空间字符C.1.1和C.1.2的共用体)中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c21"><span class="yiyi-st" id="yiyi-44"><code class="descclassname">stringprep.</code><code class="descname">in_table_c21</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-45">确定<em>代码</em>是否在表C.2.1ASCII控制字符中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c22"><span class="yiyi-st" id="yiyi-46"><code class="descclassname">stringprep.</code><code class="descname">in_table_c22</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-47">确定<em>代码</em>是否在表C.2.2非ASCII控制字符中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c21_c22"><span class="yiyi-st" id="yiyi-48"><code class="descclassname">stringprep.</code><code class="descname">in_table_c21_c22</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-49">确定<em>代码</em>是否在表C.2控制字符C.2.1和C.2.2的共用体)中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c3"><span class="yiyi-st" id="yiyi-50"><code class="descclassname">stringprep.</code><code class="descname">in_table_c3</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-51">确定<em>代码</em>是否在表C3私人使用中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c4"><span class="yiyi-st" id="yiyi-52"><code class="descclassname">stringprep.</code><code class="descname">in_table_c4</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-53">确定<em>代码</em>是否在表C.4(非字符代码点)中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c5"><span class="yiyi-st" id="yiyi-54"><code class="descclassname">stringprep.</code><code class="descname">in_table_c5</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-55">确定<em>代码</em>是否在表C5代理代码中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c6"><span class="yiyi-st" id="yiyi-56"><code class="descclassname">stringprep.</code><code class="descname">in_table_c6</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-57">确定<em>代码</em>是否在表C.6中(不适用于纯文本)。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c7"><span class="yiyi-st" id="yiyi-58"><code class="descclassname">stringprep.</code><code class="descname">in_table_c7</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-59">确定<em>代码</em>是否在表C.7(不适用于规范表示)中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c8"><span class="yiyi-st" id="yiyi-60"><code class="descclassname">stringprep.</code><code class="descname">in_table_c8</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-61">确定<em>代码</em>是否在表C.8(更改显示属性或已弃用)中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_c9"><span class="yiyi-st" id="yiyi-62"><code class="descclassname">stringprep.</code><code class="descname">in_table_c9</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-63">确定<em>代码</em>是否在表C.9(标记字符)中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_d1"><span class="yiyi-st" id="yiyi-64"><code class="descclassname">stringprep.</code><code class="descname">in_table_d1</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-65">确定<em>代码</em>是否在表D.1具有双向属性“R”或“AL”的字符中。</span></p></dd></dl><dl class="function"><dt id="stringprep.in_table_d2"><span class="yiyi-st" id="yiyi-66"><code class="descclassname">stringprep.</code><code class="descname">in_table_d2</code><span class="sig-paren">(</span><em>code</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-67">确定<em>代码</em>是否在表D.2具有双向属性“L”的字符中。</span></p></dd></dl></div></div>