ホームページ バックエンド開発 PHPチュートリアル PHP 配列によって JavaScript および json_encode_PHP に渡される gbk 中国語の文字化けコードの解決方法のチュートリアル

PHP 配列によって JavaScript および json_encode_PHP に渡される gbk 中国語の文字化けコードの解決方法のチュートリアル

Jul 13, 2016 am 10:56 AM
encode gbk javascript json php 中国語 文字化け 配列 記事 解決する

この記事では、PHP 配列を JavaScript と json_encode に渡すときに発生する gbk 中国語の文字化けの解決策を紹介します。以下は、JSON 関数の作成です。この段落は、インターネット上の某ヒーローからのものです。

コードは次のとおりですコードをコピー
/*************************************************** * **********

*
* 特定の関数を使用して配列内のすべての要素を処理します
* @param string &$array 処理対象の文字列
* @param string $function 実行する関数
* @return boolean $apply_to_keys_only キーにも適用するかどうか
* @アクセス公開
*
************************************************* * ***********/
function arrayRecursive(&$array, $function, $apply_to_keys_only = false)
{
foreach ($array as $key => $value) {
If (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_only);
} else {
$array[$key] = $function($value);
}

if ($apply_to_keys_only && is_string($key)) {

$new_key = $function($key);
If ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
}

/*************************************************** * **********

*
* 配列を JSON 文字列に変換します (中国語と互換性があります)
* @param array $array 変換する配列
* @return string 変換されたjson文字列
* @アクセス公開
*
************************************************* * ***********/
関数 JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
urldecode($json)を返します;
}

データベースに接続し、配列 $array1 の値を取得します

コードは次のとおりですコードをコピー

配列array1がJavaScriptに配列ability1に渡されます

$dbcnx = @mysql_connect ( "localhost", "root", "1234" );

if (! $dbcnx) {
echo (「現時点ではデータベース サーバーに接続できません。」);
終了 ();
}

if (! @mysql_select_db ( "pms" )) {

echo ("現時点ではジョーク " . "データベースが見つかりません。");
終了 ();
}

mysql_query ( "SET NAMES 'GB2312'" );

$q=mysql_query("ALV = 1 の能力から * を選択"); While($row=mysql_fetch_array($q)){

$array1[] = $row[AName];
}

コードは次のとおりです コードをコピー


<スクリプトタイプ="text/javascript">
varability1=;
var a=eval("能力1");
アラート(a[0]);

JSON中国語文字化けコードに対する別の解決策


中国語の場合は注意してください

オンラインで解決策を見つけました:

標準 Base64 は、URL での直接送信には適していません。これは、URL エンコーダーが標準 Base64 の「/」と「+」文字を「%XX」の形式に変更し、これらの「%」文字が保存時に含まれるためです。 ANSI SQL では「%」記号がワイルドカード文字として使用されているため、データベースに変換する必要があります。
コードは次のとおりです コードをコピー


/* json_encode の中国語文字化けを処理します */
$data = array ('game' => '火と氷の国', 'name' => '茨の精霊', 'country' => '霜の国', 'level' =>
); エコー json_encode ( $data ); エコー「
」; $newData = 配列 (); foreach ( $data as $key => $value ) {
$newData [$key] = urlencode ( $value ); }
echo urldecode ( json_encode ( $newData ) ); ?>





後で他の人にアドバイスを求めたところ、base64エンコーディングも使用できますが、Baiduは次のように説明しました。

ただし、私のデータは POST 経由で送信され、HTTP ヘッドではなくメッセージ本文にあるため、影響を受けません。

json_encode は utf-8 形式のデータのみを受け入れることができます

例: json_encode 処理後、「Xu」は「u80e5」になり、最終的な json の中国語部分は Unicode エンコーディングに置き換えられます。私たちが解決しなければならないのは、オブジェクトを json に変換し、オブジェクト内の中国語が json 内で通常の中国語として表示されるようにすることです。json_encode を使用するだけでは目標を達成できないようです。

私の解決策:最初にクラス内の中国語フィールドをURLエンコード(urlencode)し、次にオブジェクトをJSONエンコード(jsonencode)し、最後にJSON、つまり最後のJSONをURLデコード(urldecode)します。内部の中国語は依然として同じ中国語です!

テストコードは次のとおりです:




コードは次のとおりです

コードをコピー パブリック $item1 = 1; パブリック $item2 = '中国語'; 関数 to_json() { //URL エンコード、中国語を Unicode に変換する json_encode を回避します
クラス myClass {
$this->item2 = urlencode($this->item2); $str_json = json_encode($this); // URL をデコードし、オブジェクト属性が変更されないように JSON に変換した後に各属性を返します

$this->item2 = urldecode($this->item2); urldecode($str_json)を返します
}
}
$c = 新しい myClass(); エコー json_encode($c); エコー '
'; エコー $c->to_json(); エコー '
'; エコー json_encode($c); エコー '
'; echo json_encode('襥'); ?>

プログラム出力結果:

{"アイテム1":1,"アイテム2":"u4e2du6587"}
{"item1":1,"item2":"中文"}
{"アイテム1":1,"アイテム2":"u4e2du6587"}
「u80e5」






メモは http://www.bKjia.c0m/phper/php/42865.htm でご覧いただけます



www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632186.html技術記事この記事では、PHP 配列によって JavaScript と json_encode に渡される gbk 中国語の文字化けコードの解決策を紹介しています。この段落は、インターネット上のヒーローのコードから来ており、次のようにコピーされています。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles