ホームページ >バックエンド開発 >PHPの問題 >Androidでphpに中国語文字化けが発生する場合はどうすればよいですか?

Androidでphpに中国語文字化けが発生する場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2022-10-24 09:33:531738ブラウズ

Android の中国語文字化けコードの解決策: 1. 対応する php ファイルを開きます; 2. 「json_encode」の前に、「urlencode()」を使用してすべての配列のすべての内容を処理します; 3. 「json_encode()」を使用します" を json 文字列に変換します。 4. "urldecode()" を使用して、エンコードされた中国語を元に変換します。

Androidでphpに中国語文字化けが発生する場合はどうすればよいですか?

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、Dell G3 コンピューター。

Android で php 中国語が文字化けする場合はどうすればよいですか?

1. Android 自体は mysql データベースに直接アクセスできないため、mysql データベースの操作を完了するには PHP Web ページを使用する必要があります。 PHP と Android の間でデータを交換するには、JSON 形式を使用する必要があります。

2. json とは

# 21 世紀初頭、Douglas Crockford はサーバー間でデータを交換できるシンプルなデータ交換フォーマットを探していました。当時の一般的なデータ交換言語は XML でしたが、Douglas Crockford は XML の生成と解析が面倒だと感じ、簡略化された形式である Json を提案しました。

Json の仕様は非常にシンプルで、1 ページにわずか数百語で明確に説明できます。Douglas Crockford 氏は、すべての規制が規定されているため、この仕様をアップグレードする必要はないと主張しています。

1) 並列データはカンマ (", ") で区切られます。

2) マッピングはコロン (": ") で表されます。

3) 並列データの集合 (配列) は角括弧 ("[]") で表されます。

4) マップされたコレクション (オブジェクト) は中括弧 ("{}") で表されます。

上記4つのルールはすべてJson形式の内容です。

たとえば、次の文:

「北京の面積は 16,800 平方キロメートル、常住人口は 1,600 万人です。上海の面積は 6,400 平方キロメートル、人口は 1,600 万人です。」

次のように json 形式で記述します。

[  {"城市":"北京","面积":16800,"人口":1600},  {"城市":"上海","面积":6400,"人口":1800}]

データの構造が事前にわかっている場合、上記の記述方法はさらに簡略化できます。

[  ["北京",16800,1600],  ["上海",6400,1800]]

このことから、json は学習が非常に簡単で簡単に使用できることがわかります。そのため、わずか数年で、json は xml に取って代わり、インターネット上で最も人気のあるデータ交換形式になりました。

3. PHP での JSON 中国語コードの文字化け

PHP では json_encode() 組み込み関数 (php > 5.2) を使用すると、php のデータを転送し、他の言語で適切に使用できます。この関数は、値を json データ ストレージ形式に変換することです。

<?php
$arr = array( &#39;Name&#39;=>&#39;希亚&#39;,&#39;Age&#39;=>20);
$jsonencode = json_encode($arr);
echo $jsonencode;
?>

プログラムの実行結果は次のとおりです:

Androidでphpに中国語文字化けが発生する場合はどうすればよいですか?

配列内の中国語json_encode の後に \u5e0c\u4e9a などの文字化けが表示されます。

解決策は、urlencode を使用することです () 関数は次の処理を行います。json_encode の前に、urlencode() を使用してすべての配列のすべての内容を処理し、その後json_encode() を使用して json 文字列に変換し、最後に urldecode() を使用してエンコードされた中国語を元に戻します。

<?php 
/**************************************************************
* 
*
使用特定function对数组中所有元素做处理 
* @param string &$array 要处理的字符串
* @param string $function 要执行的函数 
* @return boolean $apply_to_keys_also 是否也应用到key上 
* @access public 
* 
*************************************************************/ 
function arrayRecursive(&$array, $function, $apply_to_keys_also = false) 
{    
static $recursive_counter = 0;    
if (++$recursive_counter > 1000) 
{        
die(&#39;possible deep recursion attack&#39;);    
}    
foreach ($array as $key => $value) 
{        
if (is_array($value)) 
{            
arrayRecursive($array[$key], $function, $apply_to_keys_also);        
}
else 
{            
$array[$key] = $function($value);        
}        
if ($apply_to_keys_also && is_string($key)) 
{             
$new_key = $function($key);            
if ($new_key != $key) 
{                
$array[$new_key] = $array[$key];                
unset($array[$key]);            
}        
}    
}    
$recursive_counter--; 
} 
/************************************************************** 
* 
* 将数组转换为JSON字符串(兼容中文)
* @param array $array 要转换的数组 
* @return string 转换得到的json字符串
* @access public 
* 
*************************************************************/ 
function JSON($array) 
{ 
arrayRecursive($array, &#39;urlencode&#39;, true); 
$json = json_encode($array);
 return urldecode($json); 
} 
 $array = array ( &#39;Name&#39;=>&#39;希亚&#39;,&#39;Age&#39;=>20); 
 echo JSON($array);
?>

今回はコードが正常に実行されました

Androidでphpに中国語文字化けが発生する場合はどうすればよいですか?

推奨学習: 「PHP ビデオ チュートリアル

以上がAndroidでphpに中国語文字化けが発生する場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。