当前位置: 首页 > 面试题库 >

如何使用HTTP标头发送非英语unicode字符串?

别开诚
2023-03-14
问题内容

我是HTTP相关事务的新手。我的问题是在iOS开发中,我想使用HTTP标头发送字符串,因此我在使用:

[httpRequest setValue:@"nonEnglishString" forHTTPHeaderField:@"customHeader"];

接收服务器是Python(Google App Engine),使用以下命令将dbhtml" target="_blank">模型中的字符串值保存为StringProperty:

dataEntityInstance.nonEnglishString = unicode(self.request.headers.get('customHeader')

但是,问题是当我尝试发送非英语字符串(如韩语)时,它像这样保存在HTTP标头中:

Customheader = "\Uc8fc\Uba39\Uc774 \Uc6b4\Ub2e4";

并在Google App Engine收到并保存在DataStore中后,更改为:

??? ??

好像找不到适合unicode值的字符。

使用HTTP标头发送非英语字符串是否可行或不允许?

如果我的iOS仅使用setHTTPBody,则它可以传输非英语字符串并正确保存到App Engine的数据存储区。

[httpRequest setHTTPBody:[httpBody dataUsingEncoding:NSUTF8StringEncoding]];

但是我只是找不到正确的方法来使用HTTP标头来实现相同的目标,就像Foursquare这样的许多API一样,并在基于Python的Google App
Engine的DataStore中以正确的形式保存字符串


问题答案:

使用HTTP标头发送非英语字符串是否可行或不允许?

根据HTTP标准,不可能将非ISO-8859-1字符直接放在HTTP标头中。这将为您提供ASCII(“英语”?)字符以及常见的西欧变音符号。

但是实际上,您甚至不能使用扩展的ISO-8859-1字符,因为服务器和浏览器在标头中的非ASCII字符处理方法上并不一致。Safari一字不漏地使用RFC2616,并将高字节视为ISO-8859-1字符;Mozilla取UTF-16代码单元的低字节,这是相似的但很奇怪。Opera和Chrome从UTF-8解码;IE使用本地系统代码页。

因此,实际上,您可以在HTTP标头中输入的只是简单的ASCII,没有控制代码。如果您还想要更多,则必须提出一种编码方案(例如UTF-8 +
base64)。RFC2616标准建议将RFC2047编码的单词作为一种标准的编码形式,但是考虑到RFC2047本身何时允许使用它们的定义,这没有任何意义,并且没有任何支持。



 类似资料:
  • 问题内容: 在那里,我正在制作此应用来更改字幕文件。当我测试它时,我遇到一个奇怪的问题,当我在非英语(例如,波斯语)上对其进行测试时,该程序将无法读取该文件。这是我在程序中阅读字幕的方式: 其中address是.srt文件的字符串保留位置。 我应该怎么做才能使程序读取文件? 问题答案: 创建时选择其他编码。 遵循此思路的某些方法可能会起作用: 这将更改扫描程序以使用UTF-16编码读取文件。

  • 问题内容: Express.JS提供了一些静态页面。设置很简单: 我希望响应包含一个附加的http标头( Access-Control-Allow-Origin:* )。应该放在哪里?我尝试了以下示例,但是标题仅出现在默认页面上: 谢谢。 问题答案: 我尝试了以下示例,但标题仅出现在默认页面上 是的,这是因为您仅为路由而不是其他路径定义了它。您应该改为使用中间件。 如果您希望为所有请求设置标题:

  • 问题内容: 我在从http get请求获取希伯来字符时遇到问题。 我得到这样的正方形字符:“ []”,而不是希伯来字符。 英文字符可以。 这是我的功能: 您可以通过以下示例网址进行测试: 谢谢! 问题答案: 您链接到的文件似乎不是。我测试过使用(希伯来语编码)可以正确打开它,您应该尝试使用而不是。

  • 问题内容: 我在使用Python 3中的smtplib向unicode字符发送电子邮件时遇到问题,这在3.1.1中失败,但在2.5.4中有效: 我尝试了文档中的示例,但也失败了。 http://docs.python.org/3.1/library/email- examples.html ,以MIME消息示例的形式发送目录的内容 有什么建议? 问题答案: 关键在docs中: MIMEText类是

  • 我读了这段代码。正如世外桃源.txt内容使用“测试”。该文件的大小为 4 个字节。如果我使用调试来运行 一次一个字节,每次打开文件后再次打开.txt(用记事本)我依次看到:t--

  • 问题内容: 我正在尝试使用Unicode字符执行查询。我可以通过在查询之前添加常规的相等查询(例如:)。但这在我尝试使用时似乎不起作用。关于如何进行这项工作的任何想法? 查询样例: 另外,如何知道SQL Server使用哪种编码来存储或数据类型,以及如何使用哪种编码在SQL编辑器中显示查询? 编辑:我不好。这实际上有效。我尝试在错误的窗口中执行查询。但是,这样做的好处是我了解了SQL Server