查看ISO / IEC JTC1 / SC2(编码字符集)/ WG2(通用编码字符集)的报告,这些报告可在http://std.dkuug.dk/JTC1/SC2/WG2/docs/projects获得,并与http://babelstone.blogspot.com.es/2007/06/unicode-and-isoiec-10646.html进行交叉核对,是一个初步的报告可以编辑出版日期列表。某些日期可能会关闭,特别是那些只有月份和年份(并且没有日期)的日期是目标日期。
- 1993-05-01 ISO / IEC 10646-1:1993
- 1996-03-01 ISO / IEC 10646-1:1993 TC1
- 1996-10-15 ISO / IEC 10646-1:1993 Amd.1(UTF-16)
- 1996-10-15 ISO / IEC 10646-1:1993 Amd.2(UTF-8)
- 1996-10-15 ISO / IEC 10646-1:1993 Amd.3(控制字符的代码位置:C0,C1)
- 1996-10-15 ISO / IEC 10646-1:1993 Amd.4(删除UTF-1)
- 1997-11-15 ISO / IEC 10646-1:1993 Amd.6(藏文)
- 1997-11-15 ISO / IEC 10646-1:1993 Amd.7(33个附加字符)
- 1997-12-15 ISO / IEC 10646-1:1993 Amd.8(CJK表意文字新附件)
- 1997-12-15 ISO / IEC 10646-1:1993 Amd.9(角色的标识符)
- 1998-05-15 ISO / IEC 10646-1:1993 Amd.5(韩语音节)
- 1998-07-15 ISO / IEC 10646-1:1993 TC2
- 1998-07-15 ISO / IEC 10646-1:1993 Amd.11(统一加拿大原住民音译)
- 1998-09 ISO / IEC 10646-1:1993 TC3
- 1998-09-01 ISO / IEC 10646-1:1993 Amd.12(Cherokee)
- 1998-10-01 ISO / IEC 10646-1:1993 Amd.10(Ethiopic)
- 1998-10-15 ISO / IEC 10646-1:1993 Amd.13(CJK统一表意文字)
- 1998-11-01 ISO / IEC 10646-1:1993 Amd.16(盲文模式)
- 1998-11-01 ISO / IEC 10646-1:1993 Amd.19(符文)
- 1998-11-01 ISO / IEC 10646-1:1993 Amd.20(Ogham)
- 1999-05-15 ISO / IEC 10646-1:1993 Amd.23(Bopomofo扩展及其他角色)
- 1999-06-01 ISO / IEC 10646-1:1993 Amd.21(Sinhala)
- 1999-07-15 ISO / IEC 10646-1:1993 Amd.17(CJK统一表意文字扩展A)
- 1999-07-15 ISO / IEC 10646-1:1993 Amd.18(符号和其他字符)
- 1999-10 ISO / IEC 10646-1:1993 Amd.14(彝族音节和彝族自由基)
- 1999-10 ISO / IEC 10646-1:1993 Amd.22(键盘符号)
- 1999-10 ISO / IEC 10646-1:1993 Amd.25(高棉语)
- 1999-10 ISO / IEC 10646-1:1993 Amd.26(Burmese [缅甸])
- 1999-10 ISO / IEC 10646-1:1993 Amd.27(Syriac)
- 1999-11 ISO / IEC 10646-1:1993 Amd.24(Thaana)
- 2000-02 ISO / IEC 10646-1:1993 Amd.15(Radicals [康熙和CJK补充]和数字)
- 2000-02 ISO / IEC 10646-1:1993 Amd.28(表意文字描述)
- 2000 - 02(1999年出版?) ISO / IEC 10646-1:1993 Amd.29(蒙古语)
- 2000 - 02(1999年出版?) ISO / IEC 10646-1:1993 Amd.30(其他拉丁文和其他字符)
- 2000 - 03(1999年出版?) ISO / IEC 10646-1:1993 Amd.31(藏文版)
- 2000-09-15 ISO / IEC 10646-1:2000,第2版(第1部分:架构和基本多语言平面)
- 2001-11-01 ISO / IEC 10646-2:2001(第2部分:补充飞机)
- 2002-07-15 ISO / IEC 10646-1:2000 Amd.1(数学符号和其他字符)
- 2003-02(未单独发布?) ISO / IEC 10646-1:2000 Amd.2(Limbu,Tai Le,Yijing等人物)
- 2003-02(未单独发布?) ISO / IEC 10646-2:2001 Amd.1(爱琴海,乌加里特及其他角色)
- 2003-12-15 ISO / IEC 10646:2003,第3版
- 2005-11-15 ISO / IEC 10646:2003 Amd.1(Glagolitic,Coptic,Georgian和其他角色)
- 2006-07-15 ISO / IEC 10646:2003 Amd.2(N' Ko,Phags-pa,Phoenician和其他角色)
- 2008-02-15 ISO / IEC 10646:2003 Amd.3(Lepcha,Ol Chiki,Saurashtra,Vai等人物)
- 2008-07-01 ISO / IEC 10646:2003 Amd.4(Lanna,Cham,Game Tiles和其他角色)
- 2008-12-01 ISO / IEC 10646:2003 Amd.5(Tai Tham,Tai Viet,Avestan,埃及象形文字,CJK统一表意文字扩展C及其他角色)
- 2009-10 ???? ISO / IEC 10646:2003 Amd.6(Bamum,Javanese,Lisu,Meetei Mayek,Samaritan等人物)
- 的 2009-11 ???? (2010年出版?) ISO / IEC 10646:2003 Amd.7(Mandaic,Batak,Brahmi等人物)
- (未单独发布,并入第2版) ISO / IEC 10646:2003 Amd.8(附加符号,Bamum补充,CJK统一表意文字扩展D及其他字符)
- 2011-03-15 ISO / IEC 10646:2011第2版(由于字体问题导致CJK-B图表损坏)
- 2012-06-01 ISO / IEC 10646:2012,第3版
- 2013-04-15 ISO / IEC 10646:2012 Amd.1(线性A,Palmyrene,Old North Arabian,Sindhi,Mro,Bassa Vah和其他角色)
- (待发布作为第4版的一部分) ISO / IEC 10646:2012 Amd.2(高加索阿尔巴尼亚人,Psalter Pahlavi,老匈牙利人,Mahajani,Grantha,Modi,Pahawh,Hmong,Mende,和其他人物)
- (尚未发布) ISO / IEC 10646:2014,第4版
- 2014? ISO / IEC 10646:2014 Amd.1(切诺基补充和其他角色)
- 2015? ISO / IEC 10646:2014 Amd.2(Marchen,Nushu,Tangut ideographs,Zanabazar Square和其他角色)
根据前面的清单,ISO C标准(199712L)中的示例将符合ISO / IEC 10646-1:1993 +修正案1-4,6-9,而glibc的200009L将对应ISO / IEC 10646-1:2000。 ISO C标准中的例子就在修订版5之前,该版本移动并重新组织了韩文块,这是一种不相容的变化,有时被称为“韩国混乱”,在the UTF-8 RFC中明确提到了这一点。和其他地方。
为了完整起见,这里是Unicode和ISO 10646之间的对应关系,根据http://www.unicode.org/history/publicationdates.html上的数据编译:
- 1991-10 Unicode 1.0.0
- 1992-06 Unicode 1.0.1
- 1993-06 Unicode 1.1 ISO / IEC 10646-1:1993
- 1996-07 Unicode 2.0 ISO / IEC 10646-1:1993 +修正案5-7
- 1998-05 Unicode 2.1 ISO / IEC 10646-1:1993 +修正案5-7 +修订版18的字符(欧元符号+对象替换字符(U + FFFC))
- 1999-09 Unicode 3.0 ISO / IEC 10646-1:2000
- 2001-03 Unicode 3.1 ISO / IEC 10646-1:2000 + ISO / IEC 10646-2:2001
- 2002-03 Unicode 3.2 ISO / IEC 10646-1:2000 +修订1 + ISO / IEC 10646-2:2001
- 2003-04 Unicode 4.0 ISO / IEC 10646:2003
- 2005-03 Unicode 4.1 ISO / IEC 10646:2003 +修订1
- 2006-07 Unicode 5.0 ISO / IEC 10646:2003 +修正案1-2修正案中的1-2 + 4个字符(梵文字母GGA,JJA,DDDA,BBA)
- 2008-04 Unicode 5.1 ISO / IEC 10646:2003 +修订1-4
- 2009-10 Unicode 5.2 ISO / IEC 10646:2003 +修订1-6
- 2010-10 Unicode 6.0 ISO / IEC 10646:2011 +印度卢比标志
- 2012-01 Unicode 6.1 ISO / IEC 10646:2012
- 2012-09 Unicode 6.2 ISO / IEC 10646:2012 +土耳其里拉标志(包含在Amd.1中)
- 2013-09 Unicode 6.3 ISO / IEC 10646:2012 +土耳其里拉符号+双向隔离(LRI,RLI,FSI,PDI)+阿拉伯字母MARK(ALM)(包含在Amd.2中) )
- 2014-06 Unicode 7.0 ISO / IEC 10646:2012 +修订1-2 +卢布标志(将包含在ISO / IEC 10646:2014中)
Unicode对字符属性进行了几处不兼容的更改(ISO / IEC 10646未涵盖)。其中一些内容在proposal for a Cherokee supplement和RFC6452 (The Unicode Code Points and Internationalized Domain Names for Applications (IDNA) - Unicode 6.0)中提及:
- Unicode 3.0.0:U + 01AA(LATIN LETTER REVERSED ESH LOOP),U + 01BE(LATIN LETTER INVIVEED GLOTTAL STOP WITH STROKE),U + 01BF(LATIN LETTER WYNN),U + 03F3(GREEK LETTER YOT)已更改他们的一般类别从 Lo 到 Ll 。
- Unicode 3.0.0:U + 04C0(CYRILLIC LETTER PALOCHKA)将 General Category 从 Lo 更改为 Lu 。
- Unicode 4.1.0:U + A015(YI SYLLABLE WU)将常规类别从 Lo 更改为 Lm 。
- Unicode 5.0.0:U + 10341(GOTHIC LETTER NINETY)将常规类别从 Lo 更改为 Nl 。
- Unicode 6.0:U + 0CF1(KANNADA SIGN JIHVAMULIYA),U + 0CF2(KANNADA SIGN UPADHMANIYA)将 General Category 从 So 更改为 Lo
- Unicode 6.0:U + 19DA(NEW TAI LUE THAM DIGIT ONE)将 General Category 从 Nd 更改为 No 。
- 切诺基提案本身建议将现有的切诺基角色从 Lo 改为 Ll 。
Unicode稳定性政策位于http://www.unicode.org/policies/stability_policy.html。特别是,对于Unicode 2.0及更高版本,一旦对某个字符进行编码,就不会移动或删除它,也不会更改其名称;对于Unicode 5.0及更高版本,一旦分配给一个字符,命名字符序列和形式别名将不会被更改或删除。
根据the current UNICODE publication dates,以下值是可能的(并且最具体):
- 199110L
- 199206L
- 199306L
- 199507L
- 199607L
- 199805L
- 199808L
- 199812L
- 199904L
- 199909L
- 200009L
- 200103L
- 200203L
- 200304L
- 200503L
- 200607L
- 200803L
- 200910L
- 201201L
- 201209L
- 201309L
- 201406L
但是,请注意,C(和C ++)只有几个标准:89,90,95,99,03(C ++)和11(将来有临时14)。宽字符直到95才出现!
这意味着只能合理地选择这些值中的一小部分;在我的(合理的)最新系统(gcc版本4.6.3)上,我得到200009L。
6.10.8预定义的宏名称2
yyyymmL形式的整数常量(例如,199712L)。如果
定义此符号,然后Unicode中的每个字符都需要
当存储在wchar_t类型的对象中时,set具有与之相同的值
该角色的短标识符。 Unicode必需集
由ISO / IEC 10646定义的所有字符组成,
以及所有修正案和技术勘误表
指定的年份和月份。
该问题没有最终答案,因为该标准的其他版本很可能会被释放。
此外,权威性临时答案为worth 198 Swiss Francs且受版权保护。
没有明确的清单,因为答案是图书馆版本特定的。
如果您的代码必须依赖于特定版本的Unicode(比如1997),那么您必须编写1997年不可用但1997年可能的代码,如果库不支持您想要的那个,则优雅地失败。
然后归结为:
if(__STDC_ISO_10646__ % 199700)
{
}
else if(__STDC_ISO_10646__ & 199800)
{
}