簡體   English   中英

C字符串的默認編碼是什么?

[英]What is the default encoding for C strings?

我知道C字符串是char [],在最后一個元素中帶有'\\ 0'。 但是這些字符是如何編碼的?

更新:我發現這個很酷的鏈接談論了許多其他編程語言及其編碼約定: 鏈接

所有關於此事的標准都說明你至少得到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM