将扩展的ASCII字符代码转换为utf-8字节代码

时间:2016-03-08 22:38:09

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

我正在尝试弄清楚如何对字符串进行url编码,逐个字符,当我所有的都是扩展的ASCII代码时。

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

是否可以为>做同样的事情127个char代码?例如,“á”的代码是225(基数为16的E1)。是否有可能从这里得到字节%C3%A1,它构成了“á”的url编码?如果是,需要执行哪些操作?

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

1 个答案:

答案 0 :(得分:4)

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

如果您有任何其他编码,那么您运气不好。字符的映射是任意的,因此需要一个rosetta stone而不是计算。

一旦有了Unicode点,就可以使用https://tools.ietf.org/html/rfc3629中的规范相对容易地将其编码为UTF-8。如果没有在您的问题中定义编程语言,那么尝试详细说明转换的范围就超出了范围。

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

幸运的是,大多数编程语言都有内置或第三方库用于此类转换。