ホームページ php教程 php手册 php字符编码转换代码

php字符编码转换代码

May 25, 2016 pm 04:56 PM
explode fopen iconv

里面有各种大家开发中常用到的种编码如uft8->gbk gbk转utf8 繁体转简体 简体转繁体 utf8转unicode gbk转拼音 Ascii转拼音 等

里面有各种大家开发中常用到的种编码如uft8->gbk  gbk转utf8 繁体转简体  简体转繁体 utf8转unicode  gbk转拼音 Ascii转拼音 等

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

<?php教程

/**

 * utf8转gbk

 * @param $utfstr

 */

function utf8_to_gbk($utfstr) {

 global $UC2GBTABLE;

 $okstr = '';

 if(empty($UC2GBTABLE)) {

  $filename = CODETABLEDIR.'gb-unicode.table';

  $fp = fopen($filename, 'rb');

  while($l = fgets($fp,15)) {       

   $UC2GBTABLE[hexdec(substr($l, 7, 6))] = hexdec(substr($l, 0, 6));

  }

  fclose($fp);

 }

 $okstr = '';

 $ulen = strlen($utfstr);

 for($i=0; $i<$ulen; $i++) {

  $c = $utfstr[$i];

  $cb = decbin(ord($utfstr[$i]));

  if(strlen($cb)==8) {

   $csize = strpos(decbin(ord($cb)),'0');

   for($j = 0; $j < $csize; $j++) {

    $i++;

    $c .= $utfstr[$i];

   }

   $c = utf8_to_unicode($c);

   if(isset($UC2GBTABLE[$c])) {

    $c = dechex($UC2GBTABLE[$c]+0x8080);

    $okstr .= chr(hexdec($c[0].$c[1])).chr(hexdec($c[2].$c[3]));

   } else {

    $okstr .= '&#'.$c.';';

   }

  } else {

   $okstr .= $c;

  }

 }

 $okstr = trim($okstr);

 return $okstr;

}

/**

 * gbk转utf8

 * @param $gbstr

 */

function gbk_to_utf8($gbstr) {

 global $CODETABLE;

 if(empty($CODETABLE)) {

  $filename = CODETABLEDIR.'gb-unicode.table';

  $fp = fopen($filename, 'rb');

  while($l = fgets($fp,15)) {

   $CODETABLE[hexdec(substr($l, 0, 6))] = substr($l, 7, 6);

  }

  fclose($fp);

 }

 $ret = '';

 $utf8 = '';

 while($gbstr) {

  if(ord(substr($gbstr, 0, 1)) > 0x80) {

   $thisW = substr($gbstr, 0, 2);

   $gbstr = substr($gbstr, 2, strlen($gbstr));

   $utf8 = '';

   @$utf8 = unicode_to_utf8(hexdec($CODETABLE[hexdec(bin2hex($thisW)) - 0x8080]));

   if($utf8 != '') {

    for($i = 0; $i < strlen($utf8); $i += 3) $ret .= chr(substr($utf8, $i, 3));

   }

  } else {

   $ret .= substr($gbstr, 0, 1);

   $gbstr = substr($gbstr, 1, strlen($gbstr));

  }

 }

 return $ret;

}

/**

 * 繁体转简体

 * @param  $Text

 */

function big5_to_gbk($Text) {

 global $BIG5_DATA;

 if(empty($BIG5_DATA)) {

  $filename = CODETABLEDIR.'big5-gb.table';

  $fp = fopen($filename, 'rb');

  $BIG5_DATA = fread($fp, filesize($filename));

  fclose($fp);

 }

 $max = strlen($Text)-1;

 for($i = 0; $i < $max; $i++) {

  $h = ord($Text[$i]);

  if($h >= 0x80) {

   $l = ord($Text[$i+1]);

   if($h==161 && $l==64) {

    $gbstr = ' ';

   } else {

    $p = ($h-160)*510+($l-1)*2;

    $gbstr = $BIG5_DATA[$p].$BIG5_DATA[$p+1];

   }

   $Text[$i] = $gbstr[0];

   $Text[$i+1] = $gbstr[1];

   $i++;

  }

 }

 return $Text;

}

/**

 * 简体转繁体

 * @param  $Text

 */

function gbk_to_big5($Text) {

 global $GB_DATA;

 if(empty($GB_DATA)) {

  $filename = CODETABLEDIR.'gb-big5.table';

  $fp = fopen($filename, 'rb');

  $gb = fread($fp, filesize($filename));

  fclose($fp);

 }

 $max = strlen($Text)-1;

 for($i = 0; $i < $max; $i++) {

  $h = ord($Text[$i]);

  if($h >= 0x80) {

   $l = ord($Text[$i+1]);

   if($h==161 && $l==64) {

    $big = ' ';

   } else {

    $p = ($h-160)*510+($l-1)*2;

    $big = $GB_DATA[$p].$GB_DATA[$p+1];

   }

   $Text[$i] = $big[0];

   $Text[$i+1] = $big[1];

   $i++;

  }

 }

 return $Text;

}

/**

 * unicode转utf8

 * @param  $c

 */

function unicode_to_utf8($c) {

 $str = '';

 if($c < 0x80) {

  $str .= $c;

 } elseif($c < 0x800) {

  $str .= (0xC0 | $c >> 6);

  $str .= (0x80 | $c & 0x3F);

 } elseif($c < 0x10000) {

  $str .= (0xE0 | $c >> 12);

  $str .= (0x80 | $c >> 6 & 0x3F);

  $str .= (0x80 | $c & 0x3F);

 } elseif($c < 0x200000) {

  $str .= (0xF0 | $c >> 18);

  $str .= (0x80 | $c >> 12 & 0x3F);

  $str .= (0x80 | $c >> 6 & 0x3F);

  $str .= (0x80 | $c & 0x3F);

 }

 return $str;

}

/**

 * utf8转unicode

 * @param  $c

 */

function utf8_to_unicode($c) {

 switch(strlen($c)) {

  case 1:

    return ord($c);

  case 2:

    $n = (ord($c[0]) & 0x3f) << 6;

    $n += ord($c[1]) & 0x3f;

    return $n;

  case 3:

    $n = (ord($c[0]) & 0x1f) << 12;

    $n += (ord($c[1]) & 0x3f) << 6;

    $n += ord($c[2]) & 0x3f;

    return $n;

  case 4:

    $n = (ord($c[0]) & 0x0f) << 18;

    $n += (ord($c[1]) & 0x3f) << 12;

    $n += (ord($c[2]) & 0x3f) << 6;

    $n += ord($c[3]) & 0x3f;

    return $n;

 }

}

/**

 * Ascii转拼音

 * @param $asc

 * @param $pyarr

 */

function asc_to_pinyin($asc,&$pyarr) {

 if($asc < 128)return chr($asc);

 elseif(isset($pyarr[$asc]))return $pyarr[$asc];

 else {

  foreach($pyarr as $id => $p) {

   if($id >= $asc)return $p;

  }

 }

}

/**

 * gbk转拼音

 * @param $txt

 */

function gbk_to_pinyin($txt) {

 if(CHARSET != 'gbk') {

  $txt = iconv(CHARSET,'GBK',$txt);

 }

 $l = strlen($txt);

 $i = 0;

 $pyarr = array();

 $py = array();

 $filename = CODETABLEDIR.'gb-pinyin.table';

 $fp = fopen($filename,'r');

 while(!feof($fp)) {

  $p = explode("-",fgets($fp,32));

  $pyarr[intval($p[1])] = trim($p[0]);

 }

 fclose($fp);

 ksort($pyarr);

 while($i<$l) {

  $tmp = ord($txt[$i]);

  if($tmp>=128) {

   $asc = abs($tmp*256+ord($txt[$i+1])-65536);

   $i = $i+1;

  } else $asc = $tmp;

  $py[] = asc_to_pinyin($asc,$pyarr);

  $i++;

 }

 return $py;

}

ログイン後にコピー

永久链接:

转载随意!带上文章地址吧。

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

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP 警告: fopen(): SSL 操作が file.php の X 行目で失敗した場合の解決方法 PHP 警告: fopen(): SSL 操作が file.php の X 行目で失敗した場合の解決方法 Aug 25, 2023 am 09:22 AM

PHPWarning:fopen():SSLoperationfailedinfile.phponlineX を解決する方法 PHP プログラミングでは、fopen 関数を使用してファイルまたは URL を開いて関連する操作を実行することがよくあります。ただし、fopen 関数を使用すると、Warning:fopen():SSLoperationfailedinfile.p のようなエラーが発生することがあります。

PHP 警告の解決方法: fopen(): ストリームを開けませんでした: 許可が拒否されました PHP 警告の解決方法: fopen(): ストリームを開けませんでした: 許可が拒否されました Aug 20, 2023 pm 01:45 PM

PHPWarning:fopen():failedtoopenstream:Permissiondenied を解決する方法 PHP プログラムの開発プロセスでは、PHPWarning:fopen():failedtoopenstream:Permissiondenied などのエラー メッセージに遭遇することがよくあります。このエラーは通常、ファイルまたはディレクトリのアクセス許可が正しくないことが原因で発生します。

PHP 警告の解決方法: fopen(): ストリームを開けませんでした: そのようなファイルまたはディレクトリはありません PHP 警告の解決方法: fopen(): ストリームを開けませんでした: そのようなファイルまたはディレクトリはありません Aug 19, 2023 am 10:44 AM

PHPWarning:fopen():failedtoopenstream:No suchfileordirectory PHP 開発を使用する過程で、ファイル操作の問題がよく発生します。その 1 つが「PHPWarning:fopen():failedtoopenstream:No suchfileordirectory」です。

中国語処理におすすめの必須機能:PHPのiconv関数を詳しく解説 中国語処理におすすめの必須機能:PHPのiconv関数を詳しく解説 Jun 27, 2023 pm 02:04 PM

テキスト処理中に、文字列をさまざまなエンコード形式に変換するのは一般的な要件です。 PHP 言語で提供される iconv (InternationalizationConversion) 関数は、このニーズに非常に便利に応えます。この記事では、iconv 関数の使い方を次の側面から詳しく紹介します。 iconv 関数の定義と共通パラメーターの紹介 デモ例: GBK エンコード文字列を UTF-8 エンコード文字列に変換する デモ例: UTF を変換する

Matlab での fopen 関数の使用法 Matlab での fopen 関数の使用法 Nov 28, 2023 am 11:03 AM

Matlab では、関数 fopen を使用してファイルを開き、その後のファイルの読み取りまたは書き込み操作のためにファイル識別子を返します。必要に応じて適切な権限オプションを選択してファイルを開き、操作が完了したらすぐにファイルを閉じます。ファイルを開いた後、システム リソースを解放する必要がなくなった時点でファイルを確実に閉じる必要があることに注意してください。また、ファイルのオープンに失敗したり、操作エラーが発生した場合には、エラー処理機構を使用して適切に処理できます。

PHPのexplode関数の使い方とエラー解決方法 PHPのexplode関数の使い方とエラー解決方法 Mar 10, 2024 am 09:18 AM

PHP のexplode関数は、文字列を配列に分割するために使用される関数で、非常に一般的で柔軟性があります。分解関数を使用する過程で、エラーや問題が発生することがよくありますが、この記事では、分解関数の基本的な使用方法を紹介し、エラー報告を解決するいくつかの方法を紹介します。 1.explode関数の基本的な使い方 PHPでは、explode関数の基本的な構文は次のとおりです。explode(string$separator,string$stri

C言語では、fopen()関数を使用して既存のファイルを書き込みモードで開きます。 C言語では、fopen()関数を使用して既存のファイルを書き込みモードで開きます。 Aug 27, 2023 pm 10:33 PM

C の fopen() メソッドは、指定されたファイルを開くために使用されます。問題の構文を理解するために例を見てみましょう FILE*fopen(filename,mode) ファイルを開くために fopen() を使用するための有効なモードは次のとおりです: 'r'、'w'、'a'、'r+'、'w+ '、'a+'。詳細については、C ライブラリ function-fopen() を参照してください。

PHPでファイル操作にfopen、fwrite、fcloseを使用するにはどうすればよいですか? PHPでファイル操作にfopen、fwrite、fcloseを使用するにはどうすればよいですか? Jun 01, 2023 am 08:46 AM

PHP 開発では、ファイル操作が非常に一般的です。通常の状況では、ファイルの読み取り、書き込み、削除などの操作を実行する必要があります。このうち、fopen 関数と fread 関数はファイルの読み取りに使用でき、fopen 関数、fwrite 関数、fclose 関数はファイルの書き込みに使用できます。この記事では、PHP が fopen、fwrite、fclose を使用してファイル操作を実行する方法を紹介します。 1. fopen 関数 fopen 関数はファイルを開くために使用され、その構文は次のとおりです。

See all articles