[英]What is the default encoding for C strings?
所有關於此事的標准都說明你至少得到52個大寫和小寫拉丁字母字符,數字0到9,符號! " # % & ' ( ) * + , - . / : ; < = > ? [ \\ ] ^ _ { | } ~
! " # % & ' ( ) * + , - . / : ; < = > ? [ \\ ] ^ _ { | } ~
,以及空格字符和控制字符,表示水平制表符,垂直制表符和換頁符。
關於數字編碼,唯一的說法是所有上述內容都適合一個字節,並且零后的每個數字的值比前一個數字的值大1。
實際編碼可能繼承自您的語言環境設置。 可能是ASCII兼容的東西。
c字符串幾乎只是一個字節序列。 這意味着,它沒有明確定義的編碼,可能是ASCII,UTF8或其他任何東西。 由於大多數操作系統默認使用ASCII,而源代碼主要使用ASCII編碼編寫,因此您在簡單(char *)中找到的數據通常也是ASCII。 盡管如此,無法保證你從(char *)得到的東西是UTF8甚至是KOI8。
該標准沒有具體說明。 通常使用ASCII。
它們並沒有真正“編碼”,它們只是按原樣存儲。 字符串“hello”按順序表示char值為'h'
, 'e'
, 'l'
, 'l'
, 'o'
和'\\0'
的數組。 C標准具有包含這些字符的基本字符集,但未將編碼指定為字節。 如你所知,它可能是EBCDIC。
正如其他已經指出的那樣,C對源和執行字符編碼允許的內容有一些限制,但相對寬容。 所以特別是它不一定是ASCII,在大多數情況下,現在至少是它的擴展。
您的執行環境旨在在源和執行字符集之間進行最終轉換。 所以一般來說,你不應該關心編碼,相反,嘗試獨立編碼。 這就是為什么有特殊字符的特殊轉義序列,如'\\n'
或'\\t'
以及'\Ά'
等通用字符編碼。 所以通常你不必自己查找執行字符集的編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.