IT関連

AS400/IBMi PHPで配列の文字コードを一気に変換する

投稿日:2019年3月13日 更新日:

AS400からODBCでデータを取得して表示したら、私の環境ではSJISのためそのまま画面に表示すると文字化けする。

 

ソースコードなどはUTF8で統一しているため、SJIS統一はしない方針。

 

そのため行ごとに取り出す際、mb_convert_encodingを行っていた。convで関数化している。

 

しかし、$array = $st->fetchall(PDO::FETCH_ASSOC);でデータベースをそのまま配列にぶち込み、その後php_excelなどで配列のままエクセル化したいなどの処理を行いたいと思ってきた。しかし、何も処理せず、SJISのまま配列に放り込んでしまうと、吐き出すとき結局文字化けする。

 

そこで、調べたら、mb_convert_variables()で配列ごとを文字変換できるそうだ。

 

コードは

$array = mb_convert_variables(“UTF-8″,”SJIS-win”,$array);

 

ただし、print_r($array);で出力すると、RECURSIONとエラーっぽく表示される。

しかし、きちんと変換はされているから問題ない。foreachで吐き出してみると、きちんと変換されている。

スポンサーリンク




スポンサーリンク




-IT関連
-, , ,

執筆者:


comment

Your email address will not be published. Required fields are marked *

関連記事

AS400/IBMi Laravel config設定のschemaについて

備忘録です。   Laravelのdatabase.phpにodbcの設定を入れるが、schemaって何なのか解らなかった。   今みたら設定はしていた。自社の主要なライブラリを指 …

Macのターミナルから鍵認証付きSSHでサーバにアクセスする

MacのターミナルはSSHターミナルにもなるので、それで接続することにする。 ただ私の場合は鍵認証をしているのでよくわからないので調べてみた。   ターミナルの起動は「Cmd」+「Space …

Windows環境変数を一覧表示するコマンド SET

VBAでプログラムを組むとき、プログラムを実行するユーザの環境に合わせて組むときがある。 例えばユーザ名を取得して処理を分岐するとか、ユーザのデスクトップに名前を付けて保存するとか。 それはPCのもつ …

AS400/IBMi 長いカラムを途中で折り返しで表示する

長いカラムを画面表示で端で折り返すのは自動的にAS400がやってくれる。同じ長さのカラムをDDS に用意すればいい。 ただ、このやり方では一番右端まで表示してから折り返すことになる。これを途中で折り返 …

キャノン えらんでマイプリントですぐに印刷される場合の設定

キャノンにえらんでマイプリントという、どうでもいい機能がある。 基本はキャノンの人間が設定して帰るが、新しいパソコンに買い替えたとたんその機能が効かなくなる。 それは複合機もさることながら、PC側にも …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に