目次
Unicode と utf8 エンコードを再理解する
Unicode と utf8 の関係
ホームページ バックエンド開発 PHPチュートリアル Unicode と utf8 エンコーディングを再理解する

Unicode と utf8 エンコーディングを再理解する

Jun 13, 2016 pm 12:20 PM
gt quot unicode

Unicode と utf8 エンコードを再理解する

Unicode と utf8 エンコードを再理解する


今日まで、正確に言えば、UTF-8 エンコードと Unicode について知りませんでした。エンコーディングが異なります、違いがあります
それらの間には特定のつながりがあります、その違いを見てください:

<code>UTF-8的长度是不一定的,有可能是1、2、3字节Unicode长度一定,2个字节(USC-2)UTF-8可以和Unicode互相转换</code>
ログイン後にコピー

Unicode と utf8 の関係


Unicode(16进制) UTF-8(二进制)
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx

上の表には 2 つの意味があります。1 つは明らかに Unicode と UTF-8 の文字範囲の対応関係であり、もう 1 つは Unicode と UTF-8 がどのように相互に変換されるかを示しています。 >

まず UTF-8 から Unicode への変換について説明しましょう
UTF-8 でエンコードされたバイナリは、上記の 3 つの形式と照合されます。照合後、固定ビット (x 以外の位置) が削除されます。テーブル)、右から開始します。8 ビットが足りない場合、左側は 2 バイトと 16 ビットで構成されます。次の例を見てください:


Unicode と utf8 エンコーディングを再理解する上の図のテキスト エンコード形式は UTF-8 であり、WinHex を使用してその 16 進表現を確認できます

<code>字符	=> UTF-8	  => UTF-8二进制=> 去掉固定位置凑够16位的二进制 => 16进制汉 	=> E6B189 => 11100110 10110001 10001001	=> 01101100 01001001 => 6C49字 	=> E5AD97 => 11100101 10101101 10010111	=> 01011011	01010111 => 5B57#下面是在chrome命令行下面运行的结果'\u6C49'"汉"'\u5B57'"字"#到这里的话,从UTF-8转换到Unicode已经是一件非常容易的事了,看看转换的伪代码读取一个字节,11100110判断该UTF-8字符的格式,属于第三种,3个字节继续读取2个字节得到 11100101 10101101 10010111按照格式去掉固定位     1011011 01010111不够16位,左边补零    01011011 01010111  => 5B57</code>
ログイン後にコピー
Unicode から UTF-8 への変換を見てみましょう
<code>5B57获取5B57所在的Unicode范围,0800 <= 5B57 <= FFFF,得知5B57的UTF-8有三个字节,形式为1110xxxx 10xxxxxx 10xxxxxx获取5B57的二进制编码 101101101010111用上一步骤的二进制编码从右至左拼接UTF-8编码 11100101 10101101 10010111 </code>
ログイン後にコピー
問題について教えてください


今日の問題の原因について話しましょう。フロントエンドからの入力は UTF-8 形式で最大 30 バイトであるため、フロントエンドで検証が行われ、JavaScript は Unicode エンコードを使用し、バックエンド プログラムは UTF-8 を使用します。 8 エンコーディング現在のソリューションは次のとおりです

フロントエンド
<code>function utf8_bytes(str){	var len = 0, unicode;	for(var i = 0; i < str.length; i++)	{		unicode = str.charCodeAt(i);		if(unicode < 0x0080) {			++len;		} else if(unicode < 0x0800) {			len += 2;		} else if(unicode <= 0xFFFF) {			len += 3;		}else {			throw "characters must be USC-2!!"		}	}	return len;}#例子utf8_bytes('asdasdas')8utf8_bytes('yrt燕睿涛')12</code>
ログイン後にコピー
バックエンド
<code>#对于GBK字符串$len = ceil(strlen(bin2hex(iconv('GBK', 'UTF-8', $word)))/2);#对于UTF8字符串$len = ceil(strlen(bin2hex($word))/2);</code>
ログイン後にコピー
2015/5/21 8:21 :53 PM

この記事の著作権は作者 ifforever (luluyrt@163.com) に帰属し、記事の転載後、作者およびリンクを無断で転載することを禁止します。原文への翻訳は記事ページのわかりやすい位置に提供する必要があります。そうでない場合、当社は法的責任を追及する権利を留保します。

4th Floor
清香白莲素黄真
Unicode は、各文字に対応する番号を定義する文字セットです。 。 , UTF-8、UTF-16などは、「文字に対応する数値」をバイナリでどのように格納するかを定義したエンコード形式です。
Re:
ランニングマン
@清香白连素は本当です、こう言った方が良いと思います:、Uincode 定義 文字各数値 (0x0000~0xFFFF) に対応する UTF-8 は、文字に対応する数値を定義します (すべての数値に対応する文字があるわけではありません)。その後、それらの間にマッピング関係が存在します
3階
最初の段落にタイプミスがあります
Re:
ランニングマン
@munen、変更されました、あまりにも不注意でした、ここで見直します、リマインドありがとうございます
2階
こまる
ブロガーが言及したUnicodeは実際にはutf-16です
1階
upfriend
普段はフロントエンドとバックエンドのコーディングを統一しているので、これまでこの問題にはあまり注目していませんでしたが、ブロガーの分析は非常に優れています、いいね!
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

修正: Windows 11 で Snipping ツールが機能しない 修正: Windows 11 で Snipping ツールが機能しない Aug 24, 2023 am 09:48 AM

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

iPhoneでApp Storeに接続できないエラーを修正する方法 iPhoneでApp Storeに接続できないエラーを修正する方法 Jul 29, 2023 am 08:22 AM

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

PHPを深く理解する:JSON Unicodeを中国語に変換する実装方法 PHPを深く理解する:JSON Unicodeを中国語に変換する実装方法 Mar 05, 2024 pm 02:48 PM

PHP の深い理解: JSONUnicode を中国語に変換する実装方法 開発中、JSON データを処理する必要がある状況によく遭遇しますが、特に変換する必要がある場合、JSON 内の Unicode エンコードによっていくつかのシナリオで問題が発生します。 Unicode エンコードを漢字に変換する場合。 PHP では、この変換処理を実現するためのメソッドがいくつかありますが、以下では一般的なメソッドを紹介し、具体的なコード例を示します。まず、JSON の Un について理解しましょう

Unicodeを中国語に変換する方法 Unicodeを中国語に変換する方法 Dec 14, 2023 am 10:57 AM

Unicode は、さまざまな言語や記号を表すために使用される文字エンコード標準です。 Unicode エンコードを中国語の文字に変換するには、Python の組み込み関数 chr() および ord() を使用できます。

Eclipseの中国語文字化け問題を解決する方法を試す Eclipseの中国語文字化け問題を解決する方法を試す Jan 03, 2024 pm 05:28 PM

Eclipseで中国語の文字化けに悩んでいませんか?これらのソリューションを試すには、特定のコード サンプルが必要です。 1. 背景の紹介 コンピューター技術の継続的な発展に伴い、ソフトウェア開発において中国語がますます重要な役割を果たしています。しかし、多くの開発者は、中国の開発に Eclipse を使用するとコードの文字化けの問題に遭遇し、作業効率に影響を及ぼします。次に、この記事では、一般的なコードの文字化けの問題をいくつか紹介し、読者が Eclipse での中国語の文字化けコードの問題を解決できるように、対応する解決策とコード例を示します。 2. 一般的なコード文字化けの問題と解決策ファイル

PHP チュートリアル: JSON Unicode を漢字に変換する方法 PHP チュートリアル: JSON Unicode を漢字に変換する方法 Mar 05, 2024 pm 06:36 PM

JSON (JavaScriptObjectNotation) は、Web アプリケーション間のデータ交換に一般的に使用される軽量のデータ交換形式です。 JSON データを処理するとき、Unicode でエンコードされた中国語の文字 (「u4e2du6587」など) が頻繁に発生するため、それらを読み取り可能な中国語の文字に変換する必要があります。 PHP では、いくつかの簡単なメソッドを通じてこの変換を実現できます。次に、JSONUnico を変換する方法を詳しく説明します。

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

See all articles