标签: encoding

是斜杠("/")等效于HTTP URL的路径部分中的编码斜杠("%2F")

我有一个网站,以不同的方式处理URL的路径部分(而不是查询字符串)中的"/"和"%2F".根据RFC或现实世界,这是一件坏事吗?

我问,因为我正在使用我正在使用的Web框架(Ruby on Rails)以及下面的图层(Passenger,Apache,例如,我必须为Apache启用"ALLOW_ENCODED_SLASHES").我现在倾向于完全摆脱编码的斜杠,但我想知道我是否应该提交错误报告,我看到涉及编码斜线的奇怪行为.

至于为什么我首先有编码的斜杠,基本上我有这样的路线:

:controller/:foo/:bar
Run Code Online (Sandbox Code Playgroud)

其中:foo就像一个可以包含斜杠的路径.我认为最简单的做法就是只进行URL转义,foo以便路由机制忽略斜杠.现在我有疑虑,而且很明显框架并不真正支持这一点,但根据RFC,这样做是错误的吗?

以下是我收集的一些信息:

RFC 1738(URL):

当八位字节由一个字符表示并且在编码时,URL通常具有相同的解释.但是,保留字符不是这样:编码为特定方案保留的字符可能会更改URL的语义.

RFC 2396(URI):

这些字符称为"保留",因为它们在URI组件中的使用仅限于其保留的用途.如果URI组件的数据与保留的目的冲突,则必须在形成URI之前转义冲突的数据.

(这里的转义是否意味着除了编码保留字符之外的东西?)

RFC 2616(HTTP/1.1):

除"保留"和"不安全"集合之外的字符(参见RFC 2396 [42])等同于它们的"%"HEX HEX"编码.

还有针对Rails的错误报告,他们似乎希望编码的斜杠行为不同:

是的,我期望得到不同的结果,因为他们指的是不同的资源.

它正在根目录中查找文字文件'foo/bar'.非转义版本正在查找目录foo中的文件栏.

从RFC中可以清楚地看出,原始与编码相当于未保留的字符,但保留字符的故事是什么?

url encoding http

61
推荐指数
3
解决办法
9万
查看次数

保存文件时Microsoft Excel使用什么字符集?

我有一个Java应用程序,它读取已在Excel中创建的CSV文件(例如2007).有谁知道MS Excel使用什么字符集来保存这些文件?

我猜对了:

  • windows-1255(Cp1255)
  • ISO-8859-1
  • UTF8

但我无法使用这些字符集类型解码扩展字符(例如法语强调字母).

excel encoding character-encoding

60
推荐指数
3
解决办法
12万
查看次数

获取Python可以编码的所有编码列表

我正在编写一个脚本,尝试在Python 2.6中将字节编码为许多不同的编码.有没有办法获得可以迭代的可用编码列表?

我试图这样做的原因是因为用户有一些未正确编码的文本.有趣的人物.我知道unicode角色搞砸了.我希望能够给他们一个答案,例如"你的文本编辑器将该字符串解释为X编码,而不是Y编码".我以为我会尝试使用一种编码对该字符进行编码,然后使用另一种编码再次对其进行解码,看看我们是否得到相同的字符序列.

即是这样的:

for encoding1, encoding2 in itertools.permutation(encodinglist(), 2):
  try:
    unicode_string = my_unicode_character.encode(encoding1).decode(encoding2)
  except:
    pass
Run Code Online (Sandbox Code Playgroud)

python unicode encoding character-encoding

60
推荐指数
6
解决办法
4万
查看次数

为Internet Explorer设置表单提交的字符编码

我有一个包含表单的页面.此页面的内容类型为text/html; charset = utf-8.我需要使用ISO-8859-1字符编码将此表单提交给服务器.这可能是Internet Explorer吗?

将accept-charset属性设置为表单元素,就像这样,适用于Firefox,Opera等,但不适用于IE.

<form accept-charset="ISO-8859-1">
  ...
</form>
Run Code Online (Sandbox Code Playgroud)

编辑:此表单由服务器A创建,并将提交给服务器B.我无法控制服务器B.

如果我将服务器A设置为使用charset ISO-8859-1提供内容,一切正常,但我正在寻找一种方法来使这项工作无需更改服务器A的编码.我有另一个关于在服务器A中设置编码的问题.

html forms encoding internet-explorer iso-8859-1

59
推荐指数
5
解决办法
14万
查看次数

如何读取包含特殊字符的ANSI编码文件

我正在写一个TFS Checkin策略,它检查我们的源文件是否包含我们的文件头.

我的问题是,我们的文件头包含一个特殊字符"©",不幸的是我们的一些源文件是用ANSI编码的.因此,如果我在策略中读取这些文件,则字符串看起来像"Copyright 2009".

string content = File.ReadAllText(pendingChange.LocalItem);
Run Code Online (Sandbox Code Playgroud)

我厌倦了改变字符串的编码,但它没有帮助.那么如何阅读这些文件,我得到了正确的字符串"Copyright©2009"?

感谢帮助!

关心恩伊

c# encoding ansi

59
推荐指数
3
解决办法
7万
查看次数

错误:"输入不正确的UTF-8,表示编码!" 使用PHP的simplexml_load_string

我收到错误:

parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xED 0x6E 0x2C 0x20

尝试使用simplexml_load_string第三方源处理XML响应时.原始XML响应确实声明了内容类型:

<?xml version="1.0" encoding="UTF-8"?>

然而,似乎XML并不是真正的UTF-8.XML内容的语言是西班牙语,包含DublínXML中的单词.

我无法让第三方整理他们的XML.

如何预处理XML并修复编码不兼容性?

有没有办法检测XML文件的正确编码?

php xml encoding simplexml character-encoding

59
推荐指数
4
解决办法
15万
查看次数

短rot13函数 - Python

我在Python中搜索一个简短而酷的rot13函数;-)我写了这个函数:

def rot13(s):
    chars = "abcdefghijklmnopqrstuvwxyz"
    trans = chars[13:]+chars[:13]
    rot_char = lambda c: trans[chars.find(c)] if chars.find(c)>-1 else c
    return ''.join( rot_char(c) for c in s ) 
Run Code Online (Sandbox Code Playgroud)

谁能让它变得更好?例如,支持大写字符.

python string encoding

59
推荐指数
8
解决办法
9万
查看次数

C#帮助使用StreamReader读取外来字符

我正在使用下面的代码来读取包含外来字符的文本文件,该文件是ANSI编码的,在记事本中看起来很好.下面的代码不起作用,当读取文件值并在数据网格中显示字符显示为正方形时,其他地方是否会出现其他问题?

StreamReader reader = new StreamReader(inputFilePath, System.Text.Encoding.ANSI);
using (reader = File.OpenText(inputFilePath))
Run Code Online (Sandbox Code Playgroud)

谢谢

更新1:我已经尝试了所有编码System.Text.Encoding.并且都无法正确显示文件.

更新2:我已经将文件编码(重新保存文件)更改为unicode并使用,System.Text.Encoding.Unicode并且它工作得很好.那么为什么记事本读得正确呢?为什么没有System.Text.Encoding.Unicode读取ANSI文件?

c# encoding

58
推荐指数
6
解决办法
13万
查看次数

linux shell脚本:十六进制字符串到字节

让我们说我有一个字符串5a.这是ASCII字母Z的十六进制表示.我需要知道一个Linux shell命令,它将采用十六进制字符串并输出字符串表示的二进制字节.

所以,如果我这样做

echo 5a | command_im_looking_for
Run Code Online (Sandbox Code Playgroud)

我打开Z,我会看到一封孤零零的字母Z.

linux bash shell scripting encoding

58
推荐指数
5
解决办法
11万
查看次数

使用Notepad ++更改保存文件的默认编码

而已 .我想一次打开所有文件(进行替换).但是notepad ++在ANSI中打开它们,我必须遍历每个文件并将编码更改为UTF-8.

encoding notepad++

58
推荐指数
2
解决办法
8万
查看次数