是否可以在C ++中的字符串文字中编写unicode字符

时间:2016-04-08 09:43:21

标签: c++ visual-studio visual-c++ unicode

编写以下代码是否可以?

const char* str = "§some-text";

如果源文件是以UTF-8编码保存的,str是否包含§字符的正确UTF-8表示形式?

或者写它的唯一方法是使用u8 - 前缀字符串文字?

1 个答案:

答案 0 :(得分:1)

是否可以在源代码中使用Unicode字符(而不仅仅是字符串文字)是实现定义的。可移植的唯一方法是坚持使用"基本源字符集"并使用u8"\u00a7some-text"

[lex.phases] / 1:

  

物理源文件字符以实现定义的方式映射到基本源字符集(如果需要,引入行尾指示符的换行符)。接受的物理源文件字符集是实现定义的。任何不在基本源字符集(2.3)中的源文件字符都将替换为指定该字符的通用字符名称。 (实现可以使用任何内部编码,只要源文件中遇到的实际扩展字符,以及源文件中表示为通用字符名称的相同扩展字符(例如,使用\ uXXXX表示法),处理等效,除非在原始字符串文字中还原此替换。)

"基本源字符集"是:

  

基本源字符集由96个字符组成:空格字符,表示水平制表符的控制字符,垂直制表符,换页符和换行符,以及以下91个图形字符:

     

a b c d e f g h i j k l m n o p q r s t u v w x y z

     

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

     

0 1 2 3 4 5 6 7 8 9

     

_ {} []#()< > %:; 。 ? * + - / ^& | 〜! =,\" “