问题标签 [utf-7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4472 浏览

c# - .NET 的 IMAP 文件夹路径编码 (IMAP UTF-7)?

IMAP 规范(RFC 2060 , 5.1.3. Mailbox International Naming Convention)描述了如何处理文件夹名称中的非 ASCII 字符。它定义了修改后的UTF-7 编码:

按照惯例,国际邮箱名称是使用 [UTF-7] 中描述的 UTF-7 编码的修改版本指定的。这些修改的目的是更正 UTF-7 的以下问题:

  1. UTF-7 使用“+”字符进行移位;这与邮箱名称中通常使用的“+”冲突,特别是 USENET 新闻组名称。

  2. UTF-7 的编码是使用“/”字符的 BASE64;这与使用“/”作为流行的层次分隔符相冲突。

  3. UTF-7 禁止“\”的未编码使用;这与使用“\”作为流行的层次分隔符相冲突。

  4. UTF-7 禁止“~”的未编码使用;这与在某些服务器中使用“~”作为主目录指示符相冲突。

  5. UTF-7 允许多种替代形式来表示相同的字符串;特别是,可打印的 US-ASCII 字符可以以编码形式表示。

在修改后的 UTF-7 中,可打印的 US-ASCII 字符(“&”除外)代表它们自己;也就是说,八位字节值为 0x20-0x25 和 0x27-0x7e 的字符。字符“&”(0x26)由两个八位字节序列“&-”表示。

所有其他字符(八位字节值 0x00-0x1f、0x7f-0xff 和所有 Unicode 16 位八位字节)都以修改后的 BASE64 表示,对 [UTF-7] 进行了进一步修改,即使用“,”而不是“/”。
修改后的 BASE64 不得用于表示任何可以表示自身的打印 US-ASCII 字符。

“&”用于转换为修改后的 BASE64,“-”用于转换回 US-ASCII。所有名称都以 US-ASCII 开头,并且必须以 US-ASCII 结尾(即,以 Unicode 16 位八位字节结尾的名称必须以“-”结尾)。

在我开始实现它之前,我的问题是:是否有一些.NET 代码/库(甚至在框架中)可以完成这项工作?我找不到 .NET 资源(仅适用于其他语言/框架的实现)。

谢谢!

0 投票
1 回答
4438 浏览

.net - .NET 中的智能 UTF-8 到 UTF-7

如果我有一串 UTF-8 字符并且需要将它们作为 UTF-7 输出到旧系统,我有两个与此相关的问题。

  1. 如何有效地将具有 UTF-8 字符的字符串 s 转换为没有这些字符的相同字符串?

  2. 是否有任何简单的将扩展字符(如“Ō”)转换为最接近的非扩展等效字符“O”?

0 投票
3 回答
13623 浏览

asp.net-mvc - 向所有 ASP.NET MVC HTTP 响应添加“字符集”

有没有一种简单的方法来指定所有“正常”视图是一个 ASP.NET MVC 应用程序要charset=utf-8附加到Content-Type? View()缺少允许您指定的覆盖Content-Type,并且ActionResult和朋友似乎也没有公开任何内容。动机显然是要绕过 Internet Explorer 猜测“正确”的编码类型,而我又想这样做以避免 UTF-7 XSS 攻击。

0 投票
2 回答
560 浏览

c# - Utf7Encoding 文本截断

我遇到了 Utf7Encoding 类截断“+4”序列的问题。我很想知道为什么会这样。我尝试使用 Utf8Encoding 从 byte[] 数组中获取字符串,它似乎可以正常工作。Utf8 是否存在类似的已知问题?本质上,我使用此转换产生的输出从 rtf 字符串构造 html。

这是片段:

0 投票
2 回答
6248 浏览

java - 手动加载 Java 字符集

我正在使用JavaMail API 做一些工作,并且我遇到了 Java 本身不支持的编码(按设计),例如 UTF7/unicode-1-1-utf-7。特别是对于那种编码,我发现了 Java和UTF7 的JUTF7实现。但是,将 jutf7.jar 添加到我的类路径后,我仍然得到s,并且 unicode-1-1-utf-7 绝对是 JUTF7 的别名之一。CharsetCharsetProviderUnsupportedEncodingException

有没有办法手动加载Charset或确保Charset正在加载,以便我可以排除这是一个原因?

0 投票
1 回答
1304 浏览

php - PHP、IMAP 和 Outlook 2010 - 文件夹名称编码不同?

我在 php 中开发电子邮件客户端(使用 symfony2),我遇到了名称中包含非 ascii 字符的文件夹的问题。

在 php 应用程序中创建的文件夹在同一应用程序中正确可见。在 Outlook 中相同,在 Outlook 中创建的 Outlook 看起来不错。在其他情况下不是。在 Outlook 中创建的文件夹在 php 中无法正确显示,反之亦然。

我使用 utf-7 对 php 中的文件夹名称进行编码。哪种编码使用 Outlook?

示例:名为“Wysłąne”的文件夹(波兰语拼写错误,意思是“已发送”),第一个由 php 以 utf7 编码,第二个在 Outlook 中创建:

PHP:

外表:

为什么不一样?如何以相同的编码制作它?

0 投票
0 回答
193 浏览

parsing - 如何使用 UTF-7 字符编码在收件箱中查找邮件消息

我们有一个脚本,可以根据发件人的联系记录将邮件从收件箱移动到 CRM 中(好一个 CiviCRM!)

它已停止工作,因为有人向我们发送了 UTF-7 编码的消息,而脚本无法或不会将其转换为 UTF-8

我们现在有超过一千条消息的积压。

我们如何在这个收件箱中找到针?

有谁知道一个脚本会生成一份报告,其中列出了 UTF-7 编码的任何消息,或者任何其他偷偷摸摸的方式来找到有问题的消息?

0 投票
4 回答
7774 浏览

python - Python 的 IMAP 文件夹路径编码 (IMAP UTF-7)

我想知道 Python 中是否存在任何用于 IMAP4 UTF-7 文件夹路径编码的“官方”函数/库。

imapInstance.list()我得到以下路径 IMAP UTF-7 编码:

如果我执行以下编码:

我得到:

这是 UTF-7 但不是 IMAP UTF-7 编码。Test+AOk-而不是Test&AOk- 我需要一个官方函数或库来获取 IMAP UTF-7 编码版本。

0 投票
0 回答
560 浏览

ios - iOS UTF7 编码/解码

我对 UTF7 解码有疑问。我能够隔离问题,创建以下示例代码:

在哪里:

strlen(testBuffer) 是 508,

'codePage' 是 65000,

'stringEncoding' 是 2214592768(可能是 UTF-7,正如预期的那样,但我找不到明确的确认……)。

'+ADw-' 是 '<' 的 UTF7 序列。

在此示例中,testString 始终为 nil,因此转换失败。但这里有一些奇怪的事情:

  1. 当我从 testBuffer 中删除一个“a”时,转换工作,testString 被正确创建。当我添加一个或多个“a”时,它不起作用。
  2. 当我“损坏”结尾的 utf7 编码符号(本例中唯一的一个,“+ADw-”)时,它可以正常工作。我可以将其更改为“.ADw-”或“+ADw”。并且缓冲区被正确转换。当然,“损坏”符号没有被解码,它只是按字面书写,但转换有效。它在 NSString 中生成“…aaaaa.ADw-”。我也可以将缓冲区减 1,所以我会得到“…aaaaa+ADw”,它也会被正确转换(因为 UTF7 符号不完整)。
  3. 当我在缓冲区末尾添加任何 ASCII 字符时,在 UTF7 符号之后,它可以工作。所以 Ie "...aaaaa+Adw-a" 被转换成 NSString "...aaa>a"。
  4. 当缓冲区包含更多 UTF7 符号时,它开始失败时的长度会发生变化。所以它并不总是 508 个或更多字符。
  5. 我可以在最后使用任何其他 UTF7 符号。没关系。

我也尝试用 initWithCString 替换 initWithBytes: 方法。我没有检查所有可能的情况,但在所有测试的情况下,它的行为与 initWithBytes: 相同。我已经在 iOS 6.0 上进行了测试。

您对如何正确处理 UTF7 编码的字符串有任何想法吗?

0 投票
1 回答
685 浏览

python - Python 2.7.3 UTF-8 编码不可逆

我在爬网时遇到了一些非常麻烦的字符串。特别是,一个页面宣传为 is UTF-7,尽管它并不完全UTF-7是问题所在。我不关心表达文本的确切意图,但我只需要进入UTF-8下游消费。

我面临的奇怪之处是我能够得到一个unicode不能先UTF-8编码然后解码的字符串。我已经尽可能多地提取字符串,同时仍然显示错误:

我已经在许多系统上成功地尝试过这个:Mac 10.5.7 上的 Python 2.7.1 和 2.6.7,CentOS 上的 Python 2.7.2 和 2.6.8。不幸的是,在我们需要它工作的机器上,Ubuntu 12.04 上的 Python 2.7.3 失败了。在失败的系统上,我看到:

以下是我在工作系统与非工作系统上看到的一些中间值:

两者在第一次编码后有所不同,但为什么对我来说仍然是个谜。我这是缺少一些字符表或辅助库的问题,因为看起来 2.7.2 和 2.7.3 之间的任何东西都不能解释这种行为。在它正常工作的系统上,打印 unicode 实体会显示一个中文符号,但在系统上它不会显示一个占位符。

这让我想到了一个问题:这样的问题对任何人来说都很熟悉吗,或者是否有人知道我在出现问题的系统上可能缺少哪些支持库?