サンプルにこのような二文が続けて入力されていました。SJISとEUCをそれぞれに変換しているようなのですが、実際どちらを使えば良いのでしょう。

function sjis2euc_for_Winodows($data){
if(!isset($data)){ return;}
if(preg_match("/Windows/", $_ENV["OS"])){
if(is_array($data)){
foreach($data as $key => $val){
$data[$key] = mb_convert_encoding( $key,"EUC-JP", "SJIS");
}
}else{
$data = mb_convert_encoding( $data,"EUC-JP", "SJIS");
}
return $data;
}
}

---ここで一度空白

function euc2sjis_for_Winodows($data){
if(!isset($data)){ return;}
if(preg_match("/Windows/", $_ENV["OS"])){
if(is_array($data)){
foreach($data as $key => $val){
$data[$key] = mb_convert_encoding( $key,"SJIS", "EUC-JP");
}
}else{
$data = mb_convert_encoding( $data,"SJIS", "EUC-JP");
}
return $data;
}
}

回答の条件
  • 1人1回まで
  • 登録:2006/05/19 10:24:15
  • 終了:2006/05/19 12:28:58

回答(5件)

id:Kumappus No.1

くまっぷす回答回数3784ベストアンサー獲得回数1852006/05/19 10:35:58

ポイント27pt

これらはOSがWindowsだったら処理をする、そうでないときは何もしないで戻るという関数になっています。

mb_convert_encoding()

が文字コード変換の部分です。

http://php.s3.to/man/function.mb-convert-encoding.html

上の関数はSJIS->EUCへの変換、下の関数はEUC->SJISへの変換。

どちらを、というのは用途によります。

例えばUNIX(EUCを使うことが今のところ多い)で書かれたPHPソースコードをそのままWindowsに持ってきて使うとしてその出力をSJIS(Windowsの文書ではよく使われている)にしたいというような場合にEUC->SJISの変換をするのでしょうが…。

実際にどのように使われているか、他のところを見てみないと何とも言えません。

id:tadashi0805 No.2

tadashi0805回答回数287ベストアンサー獲得回数292006/05/19 10:42:46

ポイント27pt

どちらを使うのは、入力データの文字コードがどちらで、どちらの変換結果を得たいか次第です。

用途、つまりどんなものを作りたいかです。

id:ohmix1 No.3

ohmix1回答回数235ベストアンサー獲得回数142006/05/19 10:47:28

ポイント27pt

sjis2euc_for_Winodows();

これは、Shift_JISコードをEUCコードに変換する関数。


euc2sjis_for_Winodows();

これは、EUCコードをShift_JISコードに変換する関数。


ただし、これらの関数はWinodowsの環境でのみ機能します。

つまりLinuxとかだと何もしない。


何を質問されているのかよく分かりませんが、

>実際どちらを使えば良いのでしょう。

必要があるときに使う....ということになりますが、以下は推測。


PHPでWebプログラムを作成しているのかな?

Windowsの文字コードはShift_JISなので、

HTML画面を作成するときにEUCコードで出力する必要があったり、

フォームからの入力がEUCの場合にShift_JISに変換してやる必要があります。

すべてShift_JISで入出力するなら必要な気もしますが...?


まずは、Shift_JISコードEUCコードについて調べてみてください。

id:wizemperor No.4

wizemperor回答回数379ベストアンサー獲得回数522006/05/19 10:43:34

ポイント10pt

どのような用途で使うのかによると思います。

UNIX系サーバーでの運用を前提として使われる関数だと思います。

WindowsはShift-JISが使われ、UNIX等ではEUC-JPが普通ですが、日本語のWebページではShift-JISがよく使われます。

サーバーがUNIX系(Linux, FreeBSD等)でユーザーからの入力・ブラウザへの出力ページがShift-JISで書かれているような場合に文字コードを変換するためのものでしょう。

サーバー内のファイル等から得たデータを出力(表示)する際にはeuc2sjis_for_Winodowsで変換、ユーザーからの入力をサーバー内のファイル等に保存する場合にはsjis2euc_for_Winodowsで変換するためのものかと思います。

id:vector_xenon No.5

vector回答回数113ベストアンサー獲得回数42006/05/19 10:45:33

ポイント10pt

そのサンプルを持っているわけではないので、そのサンプル、またはどのようなときにこれを使いたいのかを書いていただけないと、正直答えようがありません。


やっているのはEUC-JPからShift_JISへの、Shift_JISからEUC-JPへの変換なので、環境に合わせて使えばいいと思います。

DBがEUC-JPだけど、WebはShift_JISで構成されているとき、DBからのデータを変換するにはEUC2SJIS_for_Windows($data)を使うといった感じです。

  • id:Kumappus
    ひとつケースを忘れていました。

    このサンプル、DB(mysqlかな?)からユーザーデータを引っ張ってきてるんですよね。

    DBの場合、システムによって内部の文字コードが影響されることがあるのでお客さんの名前とかそういうのを変換するのに使うと。
  • id:takasiym
    個別にmb_convert_encoding()するケースは、
    csvなどのファイルをアップロードする場合ですかね。。。
    内部の文字エンコーディングと、
    アップロードファイルの中身のエンコーディングが違う場合、
    mb_convert_encoding()で変換することが必要になってくると思われます。
    DBのエンコーディングとphpの内部エンコーディングが異なる場合、
    通常はphp.iniでの設定になるかと。
    なぜなら、DBとのデータ入出力の度にmb_convert_encoding()を実行してたら手間がかかるし、
    バグの原因にもなるので。。。
    参考URL:http://www.bnote.net/windows/windows/code.html
  • id:takasiym
    この場合のDBとはmysqlを指します。。。
    失礼いたしました;;

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません