问题标签 [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.
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 的以下问题:
UTF-7 使用“+”字符进行移位;这与邮箱名称中通常使用的“+”冲突,特别是 USENET 新闻组名称。
UTF-7 的编码是使用“/”字符的 BASE64;这与使用“/”作为流行的层次分隔符相冲突。
UTF-7 禁止“\”的未编码使用;这与使用“\”作为流行的层次分隔符相冲突。
UTF-7 禁止“~”的未编码使用;这与在某些服务器中使用“~”作为主目录指示符相冲突。
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 资源(仅适用于其他语言/框架的实现)。
谢谢!
.net - .NET 中的智能 UTF-8 到 UTF-7
如果我有一串 UTF-8 字符并且需要将它们作为 UTF-7 输出到旧系统,我有两个与此相关的问题。
如何有效地将具有 UTF-8 字符的字符串 s 转换为没有这些字符的相同字符串?
是否有任何简单的将扩展字符(如“Ō”)转换为最接近的非扩展等效字符“O”?
asp.net-mvc - 向所有 ASP.NET MVC HTTP 响应添加“字符集”
有没有一种简单的方法来指定所有“正常”视图是一个 ASP.NET MVC 应用程序要charset=utf-8
附加到Content-Type
? View()
缺少允许您指定的覆盖Content-Type
,并且ActionResult
和朋友似乎也没有公开任何内容。动机显然是要绕过 Internet Explorer 猜测“正确”的编码类型,而我又想这样做以避免 UTF-7 XSS 攻击。
c# - Utf7Encoding 文本截断
我遇到了 Utf7Encoding 类截断“+4”序列的问题。我很想知道为什么会这样。我尝试使用 Utf8Encoding 从 byte[] 数组中获取字符串,它似乎可以正常工作。Utf8 是否存在类似的已知问题?本质上,我使用此转换产生的输出从 rtf 字符串构造 html。
这是片段:
php - PHP、IMAP 和 Outlook 2010 - 文件夹名称编码不同?
我在 php 中开发电子邮件客户端(使用 symfony2),我遇到了名称中包含非 ascii 字符的文件夹的问题。
在 php 应用程序中创建的文件夹在同一应用程序中正确可见。在 Outlook 中相同,在 Outlook 中创建的 Outlook 看起来不错。在其他情况下不是。在 Outlook 中创建的文件夹在 php 中无法正确显示,反之亦然。
我使用 utf-7 对 php 中的文件夹名称进行编码。哪种编码使用 Outlook?
示例:名为“Wysłąne”的文件夹(波兰语拼写错误,意思是“已发送”),第一个由 php 以 utf7 编码,第二个在 Outlook 中创建:
PHP:
外表:
为什么不一样?如何以相同的编码制作它?
parsing - 如何使用 UTF-7 字符编码在收件箱中查找邮件消息
我们有一个脚本,可以根据发件人的联系记录将邮件从收件箱移动到 CRM 中(好一个 CiviCRM!)
它已停止工作,因为有人向我们发送了 UTF-7 编码的消息,而脚本无法或不会将其转换为 UTF-8
我们现在有超过一千条消息的积压。
我们如何在这个收件箱中找到针?
有谁知道一个脚本会生成一份报告,其中列出了 UTF-7 编码的任何消息,或者任何其他偷偷摸摸的方式来找到有问题的消息?
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 编码版本。
ios - iOS UTF7 编码/解码
我对 UTF7 解码有疑问。我能够隔离问题,创建以下示例代码:
在哪里:
strlen(testBuffer) 是 508,
'codePage' 是 65000,
'stringEncoding' 是 2214592768(可能是 UTF-7,正如预期的那样,但我找不到明确的确认……)。
'+ADw-' 是 '<' 的 UTF7 序列。
在此示例中,testString 始终为 nil,因此转换失败。但这里有一些奇怪的事情:
- 当我从 testBuffer 中删除一个“a”时,转换工作,testString 被正确创建。当我添加一个或多个“a”时,它不起作用。
- 当我“损坏”结尾的 utf7 编码符号(本例中唯一的一个,“+ADw-”)时,它可以正常工作。我可以将其更改为“.ADw-”或“+ADw”。并且缓冲区被正确转换。当然,“损坏”符号没有被解码,它只是按字面书写,但转换有效。它在 NSString 中生成“…aaaaa.ADw-”。我也可以将缓冲区减 1,所以我会得到“…aaaaa+ADw”,它也会被正确转换(因为 UTF7 符号不完整)。
- 当我在缓冲区末尾添加任何 ASCII 字符时,在 UTF7 符号之后,它可以工作。所以 Ie "...aaaaa+Adw-a" 被转换成 NSString "...aaa>a"。
- 当缓冲区包含更多 UTF7 符号时,它开始失败时的长度会发生变化。所以它并不总是 508 个或更多字符。
- 我可以在最后使用任何其他 UTF7 符号。没关系。
我也尝试用 initWithCString 替换 initWithBytes: 方法。我没有检查所有可能的情况,但在所有测试的情况下,它的行为与 initWithBytes: 相同。我已经在 iOS 6.0 上进行了测试。
您对如何正确处理 UTF7 编码的字符串有任何想法吗?
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 实体会显示一个中文符号,但在系统上它不会显示一个占位符。
这让我想到了一个问题:这样的问题对任何人来说都很熟悉吗,或者是否有人知道我在出现问题的系统上可能缺少哪些支持库?