Oracle中漢字到底佔多少個位元組

2021-09-30 08:56:58 字數 508 閱讀 9497

之前本人認為乙個漢字都是佔兩個位元組的,mssql server如此(至少在我的理解範圍之內,如果有誤還請大家糾正)。但是最近在使用oracle資料庫,發現了一些特殊的東西,那就是,當你用兩個函式(分別是length和lengthb,這兩個函式到底是幹什麼用的,我想不需要我說明,大家查幫助就可以了)進行查詢時,發現結果是lengthb是length的三倍(當然前提是length函式中的引數都是漢字了),這就奇怪了,不是說漢字佔兩個位元組嗎?怎麼這裡變成了三個?

於是上網找資料,還真被我找到了。

這個其實和oracle的配置是相關的,用以下語句查詢:

select * from v$nls_parameters t where t.parameter='nls_characterset';

可以查詢到當前資料庫的字符集,如果value=gb2312,那麼乙個漢字占用2個位元組,如果value=al32utf8,那麼乙個漢字占用3個位元組。

於是查詢了一下本人的資料庫,字符集果然是al32utf8(這是oracle資料庫預設的)。

utf 8中的漢字佔多少個位元組

佔2個位元組的 0個漢字 佔3個位元組的 基本等同於gbk,含21000多個漢字 佔4個位元組的 中日韓超大字符集裡面的漢字,有5萬多個 乙個utf8數字佔1個位元組 乙個utf8英文本母佔1個位元組 在查詢 utf 8 編碼資料時發現,很多的帖子說的 utf 8 編碼裡,乙個漢字占用3個位元組,有...

乙個漢字佔多少位元組

1 gbk編碼,乙個漢字佔2個位元組。2 utf 16編碼,通常漢字佔2個位元組,cjkv擴充套件b區 擴充套件c區 擴充套件d區中的漢字佔4個位元組 一般字元的unicode範圍是u 0000至u ffff,而這些擴充套件部分的範圍大於u 20000,因而要用兩個utf 16 3 utf 8編碼是...

String,到底建立了多少個物件?

string str new string aaa 這行 究竟建立了幾個string物件呢?答案是2個,而不是3個。由於new string aaa 相當於 aaa 與乙個就是建立出來的放在堆時原例項物件,而另乙個就是放在常量池中的 aaa 物件,當然這裡的str本身只是乙個引用,放在棧裡,用來指向...