【问题标题】:Convert extended ASCII character codes to utf-8 byte codes将扩展的 ASCII 字符代码转换为 utf-8 字节代码
【发布时间】:2016-06-23 02:39:37
【问题描述】:

当我只有扩展的 ASCII 码时,我正试图弄清楚如何对字符串进行 url 编码,一个字符一个字符。

例如,对于低于 128 的代码,这很简单:char "?" 的代码是63,也就是16进制的3F,所以字符串“?”的url编码是“%3F”。

是否可以对 > 127 个字符代码执行相同操作?例如,“á”的代码是 225(以 16 为基数的 E1)。是否有可能从这里到达构成“á”的url编码的字节%C3%A1?如果需要,需要进行哪些操作?

编辑:我应该更具体一点,字符集是(ISO Latin-1)。看来我还应该更清楚地说明这个问题是关于以编程方式进行转换的公式/方式,而不是关于如何使用某种语言的某个库对字符进行 urlencode。

【问题讨论】:

  • "我只有扩展的 ASCII 码":你是对的; “扩展的 ASCII” 意义不大。具体的编码是什么?您可能正在使用一种编程语言和一些库。哪个?
  • 抱歉,我将问题编辑为更具体的字符编码。此外,问题不在于语言或库。一些库必须在不使用其他库的情况下实现这种转换,我对他们如何做到这一点很感兴趣。

标签: encoding utf-8 character-encoding char ascii


【解决方案1】:

如果您的“扩展 ASCII”编码是 ISO-8859-1,那么您很幸运。 Unicode 的前 255 个 Unicode 点(非 UTF-8 编码)遵循 ISO-8859-1。 IE。 á == U+00E1.

如果您有任何其他编码,那么您就不走运了。字符的映射是任意的,所以需要一个罗塞塔石而不是计算。

一旦有了 Unicode 点,您就可以使用https://www.rfc-editor.org/rfc/rfc3629 中的规范将其相对轻松地编码为 UTF-8。如果您的问题中没有定义编程语言,则无法在此处详细说明该转换。

百分比编码就是将百分比编码规范应用于 UTF-8 字符的问题。

幸运的是,大多数编程语言都有用于这种转换的内置或 3rd 方库。

【讨论】:

  • 我不会说完全不走运。如果您有权访问iconv,则可以通过编程方式将深奥编码转换为 utf-8。该函数通常在 C/shell/python/php/etc 中可用...
  • @MikeFrysinger - OP 知道 ASCII 可以很容易地映射到 UTF-8,并且想知道他/她如何以编程方式将其他字符映射到 UTF-8,大概没有库。就像我在上面的最后一段中所说的那样,大多数语言都支持这一点,包括 Unicode 字符串到百分比编码的函数,但这不是我们所要求的。
  • 太棒了,我的字符集是 ISO Latin-1,我认为是你指的 ISO-8859-1。我会看看你提供的链接
猜你喜欢
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 2011-08-16
  • 2010-12-24
相关资源
最近更新 更多