多年来,通过阅读不断发展的规范,我假设RFC 3986最终确定了转义八位字节序列的UTF-8编码。也就是说,如果我的URI有%XX%YY%ZZ
,我可以获取解码八位字节序列(对于方案特定部分中的任何URI)并将生成的字节解释为UTF-8,以找出解码信息的意图。实际上,我可以调用JavaScriptdecdeURIComponent()
来自动为我进行解码。
然后,我阅读了数据的规范:URI,RFC 2397,其中包括一个
字符集
参数,该参数(自然)表示编码数据的字符集。但这是怎么回事?如果在我的数据URI中有一个两个八位字节编码的序列,那么字符集=iso-8859-1是否表示两个解码的八位字节不应解释为UTF-8序列,而应解释为两个独立的拉丁字符(因为iso-8859-1中的每个字节代表一个字符)?RFC 2397似乎表明了这一点,因为它给出了一个“希腊语[原文如此]字符”的示例:
data:text/plain;charset=iso-8859-7,%be%fg%be
但这意味着JavaScript
decdeURIComponent()
(假设UTF-8编码的八位字节)不能用于从数据URI中提取字符串,对吗?这是否意味着如果字符集是UTF-8之外的东西,我必须为数据URI创建自己的解码?
此外,这是否意味着RFC 2397现在与RFC 3986发生冲突,这似乎表明假设是UTF-8?还是RFC 3986只引用了“新的URI方案[s]”,这意味着
data:
URI方案得到了保护,并且有自己的技术来指定编码的八位字节的含义?
目前我最好的猜测是
data:
按照自己的规则运行,如果它指示UTF-8以外的字符集,我将不得不在JavaScript中使用decdeURIComponent()
以外的东西。也欢迎关于替换方法的任何建议。
匿名用户
请记住,URI方案描述的资源可以被认为是由不透明的bytestream组成的文件,就像它是http:URI(相同的bytestream,但存储在http服务器上)或ftp:URI(相同的bytestream,但存储在ftp服务器上)或文件:URI一样(与ByTestStream相同,但存储在本地文件系统中)。只有附加到文件的元数据才具有ByTestStream的含义。
RFC 2397给出了一个关于如何将这个字节流嵌入到URI本身的明确规范(与其他URI方案不同,在其他URI方案中,URI给出了在哪里获取字节流的指令,而不是它包含什么)。它可能是base64,也可能是RFC中给出的百分比编码方法。如果字节流包含人非ASCII字节,Base64将会更加紧凑。
数据URI也描述了它自己的内容类型,它给出了ByTestStream的预期解释。在这种情况下,由于您使用了文本/纯文本;字符集=iso-8859-7,字节必须正确编码为iso-8859-7文本。字节肯定不会被确定为UTF-8或任何其他字符编码。它将使用您指定的字符编码进行明确解码。
问题内容: 这个问题已经在这里有了答案 : 如何确定Pandas列是否包含特定值 (9个答案) 3年前关闭。 我已经从文件中读取了一个熊猫数据框: 当我尝试时,它会返回,但是当我尝试时,它会返回(这就是我在这种情况下的预期)。 我不明白为什么会有行为上的差异。我读到返回列的Numpy表示形式,但是为什么返回? 谢谢! 问题答案: 熊猫系列就像字典。 搜索其索引(或键),然后 检查字符串是否在该Se
问题内容: 我知道这个问题可能被问过10000次,但是,我似乎找不到这个问题的直接答案。 我的数据库中存储了一个LOB,代表一个图像;我正在从数据库中获取该图像,我想通过HTML IMG标签将其显示在网页上。这不是我的首选解决方案,但在我找到更好的解决方案之前,这是一个权宜之计。 我正在尝试通过以下方式使用Apache Commons Codec将byte []转换为Base64: 然后,我试图像
除了Microsoft Edge,这段简单的代码在任何地方都能完美地工作 [JSFiddle] 在Microsoft Edge中,我得到“这很奇怪...Microsoft找不到此页面”错误: 更新:不幸的是,似乎没有办法在IE/Edge的链接中使用数据URI。我已经创建了关于检测链接中的数据URI支持的相关问题:用Modernizr检测链接中的数据URI支持
问题内容: 如何在Java(Android)中将字符串转换为Uri?即: myUri = ???; 问题答案: 您可以使用静态方法从
问题内容: 我有一个字符串。我希望它成为“ Uri”,这样我就可以与 如何将Songchoice转换为Uri? 问题答案: 这是文档http://developer.android.com/reference/android/net/Uri.html#parse%28java.lang.String%29
问题内容: 无论如何,有没有使用映射功能或更好的方法来替换整个数据框中的值? 我只知道如何在系列上执行映射。 我想用数字替换“ tesst”和“ set”列中的字符串,例如set = 1,test = 2 这是我的数据集的一个示例:(原始数据集非常大) 最终结果应该是 感谢您的指教, 问题答案: 那呢 正如@Jeff在评论中指出的那样,在熊猫版本<0.11.1中,手动添加到末尾以正确转换tesst