2016-03-08 107 views
0

我试图弄清楚如何在每个字符都是扩展ASCII代码时对字符串进行编码。将扩展的ASCII字符代码转换为utf-8字节代码

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

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

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

+2

“我所有的都是扩展的ASCII码”:你是对的; “扩展ASCII”并不意味着太多。什么是特定的编码?你可能使用的是编程语言,也可能是一些库。哪一个? –

+0

对不起,我编辑的问题是更具体的字符编码。另外,问题不在于语言或图书馆。有些图书馆必须在不使用其他图书馆的情况下实施这种转换,我对他们如何做到这一点感兴趣。 –

回答

2

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

如果您有任何其他编码,那么你的运气不好。角色的映射是任意的,因此需要一个罗塞塔石碑而不是计算。

一旦你有一个Unicode点,你可以使用https://tools.ietf.org/html/rfc3629中找到的规范相对容易地编码为UTF-8。如果没有在你的问题中定义的编程语言,那么试图在这里详细说明这种转换是不合适的。

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

幸运的是,大多数编程语言都具有内置或第三方库进行这种转换。

+0

我不会说完全没有运气。如果您有权访问[iconv](https://en.wikipedia.org/wiki/Iconv),则可以编程方式从深奥的编码转换为utf-8。 func通常在C/shell/python/php/etc中可用... –

+0

@MikeFrysinger - OP了解ASCII可以很容易地映射到UTF-8,并且想知道他/她如何将其他字符映射到UTF- 8编程,大概没有库。就像我在上面的结尾段落中所说的那样,大多数语言都支持这一点,包括Unicode字符串到百分比编码的函数,但这并不是问题所在。 –

+0

太棒了,我的字符集是ISO Latin-1,我认为它是您引用的ISO-8859-1。我会看看你提供的链接 –

相关问题