1. 程式人生 > >php 字元和位元組

php 字元和位元組


字元的簡介:

在js中,中文佔兩個字元,英文佔一個字元;

在php中,不同編碼下不相同,在GBK/GB2312編碼下一個中文佔2個字元,UTF-8/unicode編碼下一個中文佔3個字元;

php 位元組 和字元 

php在UTF-8編碼下,一個漢字佔3個位元組,gbk編碼下只佔2個位元組。

zìfú
字元是可使用多種不同字元方案或內碼表來表示的抽象實體。例如,Unicode UTF-16 編碼將字元表示為 16 位整數序列,而 Unicode UTF-8 編碼則將相同的字元表示為 8 位位元組序列。公共語言執行庫使用 Unicode UTF-16(Unicode 轉換格式,16 位編碼形式)表示字元。

針對公共語言執行庫的應用程式使用編碼將字元表式形式從本機字元方案對映至其他方案。應用程式使用解碼將字元從非本機方案對映至本機方案。

zìjié
位元組(Byte):位元組是通過網路傳輸資訊(或在硬碟或記憶體中儲存資訊)的單位。

一個英文字母(不分大小寫)佔一個位元組的空間,一箇中文漢字佔兩個位元組的空間.
符號:英文標點佔一個位元組,中文標點佔兩個位元組.

一個二進位制數字序列,在計算機中作為一個數字單元,一般為8位二進位制數,如一個ASCII碼就是一個位元組,此類單位的換算為:

理解編碼的關鍵,是要把字元的概念和位元組的概念理解準確。這兩個概念容易混淆,我們在此做一下區分:
  概念描述 舉例
字元 人們使用的記號,抽象意義上的一個符號。 '1', '中', 'a', '$', '¥', ……
位元組 計算機中儲存資料的單元,一個8位的二進位制數,是一個很具體的儲存空間。 0x01, 0x45, 0xFA, ……
ANSI
字串 在記憶體中,如果“字元”是以 ANSI 編碼形式存在的,一個字元可能使用一個位元組或多個位元組來表示,那麼我們稱這種字串為 ANSI 字串或者多位元組字串。 "中文123"
(佔7位元組)
UNICODE
字串 在記憶體中,如果“字元”是以在 UNICODE 中的序號存在的,那麼我們稱這種字串為 UNICODE 字串或者寬位元組字串。 L"中文123"
(佔10位元組)
由於不同 ANSI 編碼所規定的標準是不相同的,因此,對於一個給定的多位元組字串,我們必須知道它採用的是哪一種編碼規則,才能夠知道它包含了哪些“字元”。而對於 UNICODE 字串來說,不管在什麼環境下,它所代表的“字元”內容總是不變的.


相關推薦

php 字元位元組

字元的簡介: 在js中,中文佔兩個字元,英文佔一個字元; 在php中,不同編碼下不相同,在GBK/GB2312編碼下一個中文佔2個字元,UTF-8/unicode編碼下一個中文佔3個字元; php 位元組 和字元  php在UTF-8編碼下,一個漢字佔3個位元組,gb

字串、字元位元組

1. 字串 1.1 字串基礎 字串就是一串零個或多個字元,並且以一個位模式為全0的NUL位元組結尾。NUL位元組是字串的終止符,但是它本身不是字串的一部分,所以字串的長度並不包括NUL位元組。 標頭檔案string.h包含了使用字串函式所需的原型和宣告。 1.2 字串長度 字串的長度就是它所包含的字

IO流中字元位元組輸入輸出流概述

1、 IO流用來處理裝置之間的資料傳輸  a) 上傳檔案  b) 下載檔案 2、 Java對資料的操作都是通過流的方式 3、 Java 用於操作流的物件都在IO包中 4、 IO流分類  a) 流向   i. 輸入流:程式讀取資料   ii. 輸出流:程式向硬碟寫

字元位元組的區別

針對UTF-8,中國的漢字多達10多萬,常用的漢字3500左右[08年統計],如果用3個位元組來表示,一共只有2^16(65535)種可能,不足以表示10多萬的漢字。所以中日韓的超大字符集是採用的4個位元組來表示的,多達6萬多個。但是平時使用超大字符集的概率0.01%都不到。所以我們一般認為日常的中文在UTF

java String與包裝類位元組陣列、字元陣列間的轉換

java String與包裝類和位元組陣列、字元陣列間的轉換 1. 字串與基本資料的相互轉化 2.字串與字元、位元組陣列之間的轉換 1.字串轉換成字元陣列 2. 位元組陣列轉換成字串

.NET(C#):字元編碼(Encoding)位元組順序標記(BOM)

什麼是字元順序標記(BOM) 計算機內部資料儲存都是二進位制的,只有知道一段資料的二進位制儲存格式,這段資料才有意義。所謂的文字檔案其實就是用一種特定的字元編碼來將二進位制源資料轉換成文字。多數文字編輯器都可以編輯不同編碼的文字檔案,那麼文字編輯器是怎樣通過源二

unicode字元位元組字元的相互轉換介面

作者:朱金燦           發現開原始碼的可利用資源真多,從sqlite3的原始碼中摳出了幾個字元轉換介面,稍微改造下了發現還挺好用的。下面是實現程式碼:/* ** Convert a UTF-8 string to microsoft unicode (UTF-16?

字元位元組流的區別 加入了自己的理解

【以下正文】 1 . 之前 ○ 在程式中所有的資料都是以流的方式進行傳輸或儲存的,程式需要資料的時候要使用輸入流讀取資料,而當程式需要將一些資料儲存起來的時候,就要使用輸出流完成。 ○ 程式中的輸入輸出都是以流的形式儲存的,流中儲存的實際上全都是位

java 字元位元組流的比較

IO分兩種流位元組流 InputStream OutputStream字元流 Reader Writer他們都是抽象類具體實現位元組流 FileInputStream FileOutputStream字元流 FileReader FileWriter 字元流處理的單元為2個

JAVA IO流——字元位元組流的粗淺理解

本人在使用IO流是經常在選擇是output還是input,reader還是writer中糾結一會,歸根結底還是沒有對IO流方向問題擁有自己的理解。 位元組流和字元流,顧名思義,前者和位元組打交道,後者和字元打交道。 位元組流和字元流都分為輸入和輸出兩個方向,

分別使用(字元流)(位元組流)對檔案進行讀寫操作

一.使用(字元流)對檔案進行讀寫操作/* * 使用字元流對檔案進行讀寫操作 */ import java.io.BufferedReader; import java.io.FileInputSt

C#中的流、位元組字元字串

首先要明白它們本身是由什麼組成的: 流:二進位制 位元組:無符號整數 字元:Unicode編碼字元 字串:多個Unicode編碼字元 那麼在.net下它們之間如何轉化呢? 一般是遵守以下規則: 流->位元組陣列->字元陣列->字串 下

Java 字元位元組流-學習筆記

 一:字元流  Reader和Writer(基類)  FileReader和FileWriter(定義字元輸入、輸出流)  BufferedReader和BufferedWriter(字元帶緩衝輸入、輸出流)  LineNumberReader    二:字元流拷貝檔案,4中方式  1.FileReader和

IO流字元位元組流的不同使用

源頭: Reader (字元流) 和 InputStream(位元組流) 目標 Writer(字元流)和 OutputStream(位元組流) 裝置 鍵盤 硬碟 控制檯 高效率操作 字元流: BufferedReader BuffereWr

【筆面試】字元位元組流的區別以及如何解決亂碼問題

工作中經常遇到java編碼問題,由於缺乏研究,總是無法給出確切的答案,這個週末在網上查了一些資料,在此做些彙總。 問題一:在java中讀取檔案時應該採用什麼編碼? Java讀取檔案的方式總體可以分為兩類:按位元組讀取和按字元讀取。按位元組讀取就是採用InputStre

PHP去除字串中的空白字元特殊字元

使用者在輸入資料時,經常會無意地輸入多餘的空白字元,在有些情況下,字串中不允許出現空白字元和特殊字元,這時就需要將其去除。 去除字串左邊的空白字元和特殊字元 ltrim()函式用於去除字串左邊的空白

Java I/O流複習(二)—字元流、字元緩衝流、以及位元組流的區別

Java I/O流複習(二) 1 字元輸入流 字元流(Java IO的Reader和Writer)功能與InputStream和OutputStream非常類似,InputStream和OutputStream基於位元組處理,而字元流(Reader和Writ

關於php strtr str_replace 效率的問題

abcde 優化 bcd php 7 abcdefg 5.6 nginx 網上 環境 在網上看了一些php優化的指南,裏面提到:使用strtr 函數 比 str_replace快4倍。 本著探索的精神動手驗證。 代碼 $string = ‘abcdefg‘; set_

php裁剪縮放

col ini get mime 長度 color 裁剪 turn () 1 <?php 2 3 /** 4 * @remark:將歷史圖片切成750x500尺寸 5 * 6 */ 7 class Cutimage{ 8

php include require

vars compile 發生 pre meta ade 定義 一個 安全性 PHP include 和 require 語句 在 PHP 中,您可以在服務器執行 PHP 文件之前在該文件中插入一個文件的內容。 include 和 require 語句用於在執行流中插入寫在