Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Character encoding 如何将字符串从给定编码转换为其他编码?_Character Encoding_Iconv - Fatal编程技术网

Character encoding 如何将字符串从给定编码转换为其他编码?

Character encoding 如何将字符串从给定编码转换为其他编码?,character-encoding,iconv,Character Encoding,Iconv,我不打算编写任何在不同字符编码之间转换文本的软件iconv存在。我只是好奇地想知道在阅读角色编码时如何做到这一点。因为,不同编码的字符将有不同的代码点,对我来说,似乎没有自动的方式来做这件事,我的意思是没有任何人为干预。希望OCR不是这样做的:P 为了澄清,假设我们有一个字符串“Yahoo!”,它的UTF-8编码是E。拉丁语-1中的编码E'也是“Yahoo!”?此外,我举的例子似乎很简单。如何对常规字符串执行此操作 正如该优秀教程的优秀作者所写(*cough*cough*): 在编码之间转换是比

我不打算编写任何在不同字符编码之间转换文本的软件<代码>iconv存在。我只是好奇地想知道在阅读角色编码时如何做到这一点。因为,不同编码的字符将有不同的代码点,对我来说,似乎没有自动的方式来做这件事,我的意思是没有任何人为干预。希望OCR不是这样做的:P


为了澄清,假设我们有一个字符串“Yahoo!”,它的UTF-8编码是
E
。拉丁语-1中的编码
E'
也是“Yahoo!”?此外,我举的例子似乎很简单。如何对常规字符串执行此操作

正如该优秀教程的优秀作者所写(*cough*cough*):

在编码之间转换是比较两个代码页并确定编码A中的字符152与编码B中的字符4122相同,然后相应地更改位的繁琐任务

将一种编码映射到另一种编码确实是一页又一页让人麻木的表格。例如,从:

通常,将每个可能的编码映射到Unicode是有意义的。由于Unicode可以表示所有可能的字符,因此可以对→ 统一码→ 编码B,而不需要所有可能的编码组合之间的转换表(这将是n²,而且相当荒谬)。没有一般的程序捷径。一些编码比其他编码更容易映射到Unicode,因此您可以为这些编码编写一些非常简短的代码,但所有其他编码都需要手动调整


请注意,至少部分源代码可能是从现有源代码生成的;我怀疑所有这些表格都是手写的。尽管如此,还是有人不得不在某个时候编写一些查找表。

正如优秀教程的优秀作者所写(*cough*cough*):

在编码之间转换是比较两个代码页并确定编码A中的字符152与编码B中的字符4122相同,然后相应地更改位的繁琐任务

将一种编码映射到另一种编码确实是一页又一页让人麻木的表格。例如,从:

通常,将每个可能的编码映射到Unicode是有意义的。由于Unicode可以表示所有可能的字符,因此可以对→ 统一码→ 编码B,而不需要所有可能的编码组合之间的转换表(这将是n²,而且相当荒谬)。没有一般的程序捷径。一些编码比其他编码更容易映射到Unicode,因此您可以为这些编码编写一些非常简短的代码,但所有其他编码都需要手动调整

请注意,至少部分源代码可能是从现有源代码生成的;我怀疑所有这些表格都是手写的。尽管如此,还是有人不得不在某个时候编写一些查找表。

作者本人!。谢谢:)。而且,用Unicode表示所有编码的想法当然是有道理的。作者本人!。谢谢:)。而且,用Unicode表示所有编码的想法当然是有道理的。
static const unsigned short cp950_2uni_pagea1[314] = {
  /* 0xa1 */
  0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a,
  0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52,
  0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
  0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
  0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
  0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
  0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
  0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
  0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
  0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
  0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
  0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
  0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
  0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
  0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
  0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
  0xfe66, 0xff5e, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
  0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
  0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
  0x2199, 0x2198, 0x2225, 0x2223, 0xff0f,
  ...