ホームページ ウェブフロントエンド htmlチュートリアル Web 開発で発生する UTF-8 エンコードの問題の概要

Web 開発で発生する UTF-8 エンコードの問題の概要

Dec 16, 2016 pm 03:45 PM

主に 5 つの側面があります:

1. HTML ページを UTF-8 エンコーディングに変換する問題

2. PHP ページを UTF-8 エンコーディングに変換する問題

3. UTF-8 エンコーディングを使用する問題MYSQL データベース

4. JS 関連の UTF-8 エンコードの問題

5. FLASH 関連の UTF-8 エンコードの問題

1. HTML ページの UTF-8 エンコードの問題

1. の後に行を追加します。 の前: </p> <p><meta http-equiv='Content-Type' content='text/html'; /></p> <p>この順序は間違ってはいけません。<title> タグの前に追加する必要があります。そうしないと、<title> と の間に漢字が含まれる場合、表示されるタイトルが文字化けする可能性があります。

2.html ファイルのエンコーディングの問題:

エディターのメニューをクリックします: [ファイル] -> [名前を付けて保存]、現在のファイルのエンコーディングが表示されます。ファイル エンコーディングが UTF-8 であることを確認します。 ANSI です。エンコードを UTF-8 に変更する必要があります。

3. HTML ファイルのヘッダー BOM の問題:

他のエンコーディングから UTF-8 エンコーディングにファイルを変換する場合、BOM タグがファイルの先頭に追加されると、ブラウザーで表示時に文字化けが発生する場合があります。漢字。

この BOM タグを削除する方法:

1. Dreamweaver でファイルを開いて再保存すると、BOM タグを削除できます。

2. EditPlus でファイルを開き、メニューの「環境設定」->「ファイル」->「UTF-8 ID」で「署名を常に削除する」に設定し、ファイルを保存します。 BOM タグを削除できます。

4. WEB サーバーの UTF-8 エンコードの問題:

上記の手順を実行しても中国語の文字化けの問題が解決しない場合は、使用している WEB サーバーのエンコードの問題を確認してください

Apache を使用している場合は、設定してください設定ファイルの文字セットを utf-8 に変更します (ここにはメソッドのみがリストされています。特定の形式については、Apache 設定ファイルを参照してください)。

Nginx を使用している場合は、nginx.conf の charset を utf-8 に設定してください。特に「charset 」を見つけてください。 gb2312;" または同様のステートメントを、"charset utf-8;" に変更します。



2. PHP ページの UTF-8 エンコードへの変換の問題

1. 先頭に行を追加しますコード:

header("Content-Type: text/html;charset=utf-8");

2.PHP ファイルのエンコードの問題

エディタのメニューをクリックします: 「ファイル」->「保存」 「現在のファイルのエンコーディングに移動し、ファイルのエンコーディングが UTF-8 であることを確認します。ANSI の場合は、エンコーディングを UTF-8 に変更する必要があります。

3. PHP ファイルのヘッダーBOM の問題:

PHP ファイルには BOM タグがあってはなりません。そうしないと、セッションが使用できなくなり、同様のプロンプトが表示されます:

警告: session_start() [function.session-start]:セッションキャッシュを送信できません リミッター - ヘッダーはすでに送信されています

これは、session_start() の実行中に、 の場合、ページ全体を出力することはできませんが、前の PHP ページに BOM タグが存在するため、PHP は BOM タグを出力として扱うため、エラーが発生します。

そのため、PHP ページで BOM タグを削除する必要があります

この BOM タグを削除する方法:

1. Dreamweaver でファイルを開いて再保存すると、BOM タグを削除できます。

2. EditPlus でファイルを開き、メニューの「環境設定」->「ファイル」->「UTF-8 ID」で「署名を常に削除する」に設定し、ファイルを保存します。 BOM タグを削除できます。

4. PHP がファイルを添付ファイルとして保存するときの UTF-8 エンコードの問題:

PHP がファイルを添付ファイルとして保存するとき、ファイル名は GB2312 でエンコードされる必要があります。そうしないと、ファイル名に中国語が含まれる場合、文字化けする可能性があります:

PHP 自体が UTF-8 エンコード形式のファイルである場合、ファイル名変数を UTF-8 から GB2312 に変換する必要があります:

iconv("UTF-8", "GB2312", "$ filename");

5. 記事タイトルを切り詰めて表示すると、文字化けや「?」マークが表示される:

通常、記事タイトルが非常に長い場合、タイトルの一部が表示され、記事がUTF-8 でエンコードされた中国語の文字は 3 文字の幅を占めるため、タイトルは切り詰められます。インターセプトが完了していない場合、中国語の文字の幅が 1 文字または 2 文字だけである場合があります。文字化けまたは疑問符が表示されます。次の関数を使用して Title をインターセプトします。問題はありません。

function get_brief_str($str, $max_length) 
{ 
echo strlen($str) 
."<br>"; 
if(strlen($str) > $max_length) 
{ 
$check_num = 0; 
for($i=0; $i < $max_length; $i++) 
{ 
if (ord($str[$i]) > 128) 
$check_num++; 
} 

if($check_num % 3 == 0) 
$str = substr($str, 
0, $max_length)."..."; 
else if($check_num % 3 == 1) 
$str = substr($str, 
0, $max_length + 2)."..."; 
else if($check_num % 3 == 2) 
$str = 
substr($str, 0, $max_length + 1)."..."; 
} 

return $str; 
}
ログイン後にコピー

3. MYSQL データベースの UTF-8 エンコーディングの使用に関する問題

1. phpmyadmin を使用してデータベースを作成し、データ テーブル

データベースを作成するときは、「組織」を「utf8_general_ci 」に設定するか、次のステートメントを実行してください:

CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ログイン後にコピー

データ テーブルを作成するとき: フィールドに中国語が格納されている場合は、「組織」を「utf8_general_ci」に設定する必要があります”,
フィールドに英語または数字が格納されている場合は、デフォルトで問題ありません。

対応する SQL ステートメント (例:

CREATE TABLE `test` ( 
`id` INT NOT NULL , 
`name` VARCHAR( 10 ) CHARACTER 
SET utf8 COLLATE utf8_general_ci NOT NULL , 
PRIMARY KEY ( `id` ) 
) 
ENGINE = MYISAM ;
ログイン後にコピー

) 2. PHP を使用してデータベースの読み取りと書き込みを行います

データベースに接続した後:

$connection = mysql_connect($host_name, $host_user, $host_pass);
ログイン後にコピー

2 行を追加します:

mysql_query("set character set &#39;utf8&#39;");//读库 
mysql_query("set names &#39;utf8&#39;");//写库
ログイン後にコピー

MYSQL データベースの読み取りと書き込みは通常どおり行うことができます。 。


4. JS に関連する UTF-8 エンコードの問題

1. JS が Cookie を読み取るときに中国語が文字化けする問題

PHP は、Cookie を書き込むときに中国語の文字をエスケープする必要があります。そうしないと、JS が Cookie 内の中国語の文字を読み取ると意味不明になってしまいます。

但php本身没有escape函数,我们新写一个escape函数:

function escape($str) 
{ 
preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r); 
$ar = $r[0]; 
foreach($ar as $k=>$v) 
{ 
if(ord($v[0]) < 128) 
$ar[$k] = 
rawurlencode($v); 
else 
$ar[$k] = 
"%u".bin2hex(iconv("UTF-8","UCS-2",$v)); 
} 
return join("",$ar); 
}
ログイン後にコピー

JS读cookie的时候,用unescape解码,然后就解决cookie中有中文乱码的问题了。

2.外部JS文件UTF-8编码问题

当一个HTML页面或则PHP页面包含一个外部的JS文件时,如果HTML页面或则PHP页面是UTF-8编码格式的文件,外部的JS文件同样要转成UTF-8的文件,否则将出现,没有包含不成功,调用函数时没有反应的情况。

点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8,如果是ANSI,需要将编码改成:UTF-8。



五.FLASH相关的UTF-8编码问题

FLASH内部对所有字符串,默认都是以UTF-8处理

1.FLASH读文普通本文件(txt,html)

要将文本文件的编码存为UTF-8

点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8,如果是ANSI,需要将编码改成:UTF-8。

2.FLASH读XML文件

要将XML文件的编码存为UTF-8

点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8,如果是ANSI,需要将编码改成:UTF-8。

在XML第1行写:

<?xml version="1.0" encoding="utf-8"?>
ログイン後にコピー


3.FLASH读PHP返回数据

如果PHP编码本身是UTF-8的,直接echo就可以了。

如果PHP编码本身是GB2312的,可以将PHP转存成UTF-8编码格式的文件,直接echo就可以了

如果PHP编码本身是GB2312的,而且不允许改文件的编码格式,用下面的语句将字符串转换成UTF-8的编码格式

$new_str = iconv("GB2312", "UTF-8", "$str");
ログイン後にコピー
ログイン後にコピー

再echo就可以了

4.FLASH读数据库(MYSQL)的数据

FLASH要通过PHP读取数据库中的数据,PHP本身的编码不重要,关键是如果数据库的编码是GB2312的话,需要用下面的语句将字符串转换成UTF-8的编码格式。

$new_str = iconv("GB2312", "UTF-8", "$str");
ログイン後にコピー
ログイン後にコピー

5.FLASH通过PHP写数据

一句话,FLASH传过来的字符串是UTF-8格式的,要转换成相应的编码格式,再操作(写文件、写数据库、直接显示等等),还是用iconv函数转换。

6.FLASH使用本地编码(理论上不推荐使用)

如果想让FLASH不使用UTF-8编码,而是使用本地编码。对于中国大陆地区而言,本地编码是GB2312或GBK

AS程序内,可以添加以下代码:

System.useCodepage = true;
ログイン後にコピー

那么FLASH内所有字符都是使用GB2312的编码了,所有导入到FLASH或者从FLASH导出的数据,都应该做相应的编码转换。

因为使用本地编码,会造成使用繁体中文地区的用户产生乱码,所以不推荐使用。

 以上就是Web 开发中遇到的UTF-8编码的问题总结的内容,更多相关文章请关注PHP中文网(www.php.cn)! 


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Python+Flaskを使ってWebページのログのリアルタイム更新・表示を実現する方法 Python+Flaskを使ってWebページのログのリアルタイム更新・表示を実現する方法 May 17, 2023 am 11:07 AM

1. module を使用したファイルへのログ出力:logging はカスタム レベルのログを生成し、指定したパスにログを出力できます ログ レベル: debug (デバッグ ログ) = 5) {clearTimeout (time) // すべての結果が取得された場合 10連続した時間が空です スケジュールされたタスクのログをクリアします}return}if(data.log_type==2){//新しいログが取得された場合 for(i=0;i

Nginx Webサーバーキャディの使用方法 Nginx Webサーバーキャディの使用方法 May 30, 2023 pm 12:19 PM

Caddy の概要 Caddy は強力で拡張性の高い Web サーバーであり、現在 Github 上に 38,000 以上のスターが付いています。 Caddy は Go 言語で書かれており、静的リソースのホスティングとリバース プロキシに使用できます。 Caddy には以下の主な特徴があります: Nginx の複雑な構成と比較して、元の Caddyfile 構成は非常にシンプルです; 提供する AdminAPI を通じて構成を動的に変更できます; デフォルトで自動 HTTPS 構成をサポートし、自動的に適用して構成できますHTTPS 証明書; 数万のサイトのデータに拡張可能; 追加の依存関係なしでどこでも実行可能; Go 言語で記述されているため、メモリの安全性がより保証されます。まずはCentOに直接インストールします

Java API開発におけるWebサーバー処理にJetty7を使用する Java API開発におけるWebサーバー処理にJetty7を使用する Jun 18, 2023 am 10:42 AM

JavaAPI 開発における Web サーバー処理に Jetty7 を使用する インターネットの発展に伴い、Web サーバーはアプリケーション開発の中核部分となり、多くの企業でも注目を集めています。増大するビジネス ニーズを満たすために、多くの開発者が Web サーバー開発に Jetty の使用を選択しており、その柔軟性と拡張性は広く認識されています。この記事では、JavaAPI 開発における Jetty7 の使用方法を紹介します。

ウェブ上の顔面ブロック攻撃に対するリアルタイム保護 (機械学習に基づく) ウェブ上の顔面ブロック攻撃に対するリアルタイム保護 (機械学習に基づく) Jun 10, 2023 pm 01:03 PM

顔面遮蔽弾幕とは、映像内の人物を遮ることなく大量の弾幕が浮遊し、人物の背後から浮遊しているように見せることです。機械学習は数年前から普及していますが、これらの機能がブラウザでも実行できることは多くの人に知られていません。この記事では、ビデオ連発における実際的な最適化プロセスを紹介します。記事の最後に、適用可能なシナリオをいくつか示します。このソリューションを開くことを望んでいます。いくつかのアイデアがあります。 mediapipeDemo (https://google.github.io/mediapipe/) は、顔ブロック弾幕のオンデマンドアップアップロードの主流の実装原理を示していますサーバーのバックグラウンド計算により、ビデオ画面内のポートレート領域を抽出し、SVG ストレージに変換しますクライアントがビデオを再生している間、サーバーから SVG をダウンロードし、弾幕、ポートレートと組み合わせる

FRPS サーバーと Web がポート 80 を共有するように nginx を設定する方法 FRPS サーバーと Web がポート 80 を共有するように nginx を設定する方法 Jun 03, 2023 am 08:19 AM

まず、frpって何?という疑問があると思います。簡単に言うと、frp はイントラネット侵入ツールであり、クライアントを設定すると、サーバー経由でイントラネットにアクセスできるようになります。現在、私のサーバーは Web サイトとして nginx を使用しており、ポート 80 が 1 つだけあります。では、FRP サーバーもポート 80 を使用したい場合はどうすればよいでしょうか?クエリ後、nginx のリバース プロキシを使用してこれを実現できます。追加: frps はサーバー、frpc はクライアントです。ステップ 1: サーバーの nginx.conf 構成ファイルを変更し、次のパラメータを nginx.conf の http{} に追加します。server{listen80

Golang を使用して Web アプリケーションのフォーム検証を実装する方法 Golang を使用して Web アプリケーションのフォーム検証を実装する方法 Jun 24, 2023 am 09:08 AM

フォーム検証は Web アプリケーション開発において非常に重要なリンクであり、フォーム データを送信する前にデータの有効性をチェックして、アプリケーションのセキュリティ脆弱性やデータ エラーを回避できます。 Web アプリケーションのフォーム検証は、Golang を使用すると簡単に実装できます。この記事では、Golang を使用して Web アプリケーションのフォーム検証を実装する方法を紹介します。 1. フォーム検証の基本要素 フォーム検証の実装方法を紹介する前に、フォーム検証の基本要素が何であるかを知る必要があります。フォーム要素: フォーム要素は

コックピット Web UI から管理アクセスを有効にする方法 コックピット Web UI から管理アクセスを有効にする方法 Mar 20, 2024 pm 06:56 PM

Cockpit は、Linux サーバー用の Web ベースのグラフィカル インターフェイスです。これは主に、初心者/熟練ユーザーにとって Linux サーバーの管理を容易にすることを目的としています。この記事では、Cockpit アクセス モードと、CockpitWebUI から Cockpit への管理アクセスを切り替える方法について説明します。コンテンツ トピック: コックピット エントリ モード 現在のコックピット アクセス モードの確認 CockpitWebUI からコックピットへの管理アクセスを有効にする CockpitWebUI からコックピットへの管理アクセスを無効にする まとめ コックピット エントリ モード コックピットには 2 つのアクセス モードがあります。 制限付きアクセス: これは、コックピット アクセス モードのデフォルトです。このアクセス モードでは、コックピットから Web ユーザーにアクセスできません。

ウェブ標準とは何ですか? ウェブ標準とは何ですか? Oct 18, 2023 pm 05:24 PM

Web 標準は、W3C およびその他の関連組織によって策定された一連の仕様とガイドラインです。HTML、CSS、JavaScript、DOM、Web アクセシビリティおよびパフォーマンスの最適化の標準化が含まれます。これらの標準に従うことで、ページの互換性を向上させることができます。 、メンテナンス性とパフォーマンス。 Web 標準の目標は、Web コンテンツをさまざまなプラットフォーム、ブラウザー、デバイス上で一貫して表示および操作できるようにして、より優れたユーザー エクスペリエンスと開発効率を提供することです。

See all articles