__STDC_ISO_10646__的可能值

时间:2014-06-23 01:22:47

标签: c unicode iso

__STDC_ISO_10646__宏的可能值是什么?维基百科有a list of the versions ISO 10646对应不同的Unicode版本,但只有年份,而不是月份,宏包含月份值。

编辑:由于有几个人完全无法理解实际问题。我要求一个特定的数字列表,这个宏可以作为其值,以及每个数字的相应ISO 10646版本。

5 个答案:

答案 0 :(得分:8)

查看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 supplementRFC6452 (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及更高版本,一旦分配给一个字符,命名字符序列和形式别名将不会被更改或删除。

答案 1 :(得分:3)

根据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。

答案 2 :(得分:2)

6.10.8预定义的宏名称2

  

yyyymmL形式的整数常量(例如,199712L)。如果   定义此符号,然后Unicode中的每个字符都需要   当存储在wchar_t类型的对象中时,set具有与之相同的值   该角色的短标识符。 Unicode必需集   由ISO / IEC 10646定义的所有字符组成,   以及所有修正案和技术勘误表   指定的年份和月份。

答案 3 :(得分:2)

该问题没有最终答案,因为该标准的其他版本很可能会被释放。

此外,权威性临时答案为worth 198 Swiss Francs且受版权保护。

答案 4 :(得分:1)

没有明确的清单,因为答案是图书馆版本特定的。

如果您的代码必须依赖于特定版本的Unicode(比如1997),那么您必须编写1997年不可用但1997年可能的代码,如果库不支持您想要的那个,则优雅地失败。

然后归结为:

if(__STDC_ISO_10646__ % 199700)
{
}
else if(__STDC_ISO_10646__ & 199800)
{
}