LoginSignup
0
0

More than 3 years have passed since last update.

MAMP, phpで多言語のcsvを読み込む際に、カンマごとにうまく取得できない時の確認箇所と解決方法

Posted at

MAMP, phpで多言語のcsvを読み込む際に、カンマごとにうまく取得できない時

グローバル時代を迎え、多言語対応のサイトやアプリを開発する機会が多い最近。mamp, phpで多言語のcsvを読み込む際に、カンマごとにうまく取得できない時があって悩んでいる方、
その方々に、試行錯誤を経て分かった方法を共有します。

環境の整理

  • プログラミング言語:php
  • サーバー起動:MAMP
  • 対象言語:韓国語

目的

assets/csv/にあるprofile.csv からデータを取得し、
1列ごとにphpの配列に格納したい。

例:
"성명"
"stage_name"
...

まず挙動を確認するため、var_dump()メソッドで表示を確認。

CSV状況

aaa.png

phpファイル状況

profile.php

if (($handle = fopen("assets/csv/profile.csv", "r")) !== FALSE) {
  while (($data = fgetcsv($handle))) {
    var_dump($data[0]);
  }

ブラウザ表示状況

bbb.png

*目的と違って、1行目の3列分が取得される場合がある。"성명,본명,영어"

原因

php.ini の文字コード設定にあった。

解決方法

  1. MAMP/conf/phpx.x.x(=>自分が使用しているphpバージョン) にあるphp.iniを開く
  2. default_charset を"UTF-8"に変更する。(今回のように新しく追加してもいい)
  3. mbstring.internal_encodingをUTF-8に変更する。(今回のように新しく追加してもいい)

    php.ini
    ;default_charset = "iso-8859-1"
    default_charset = "UTF-8"
    
    ;mbstring.internal_encoding = EUC-JP
    mbstring.internal_encoding = UTF-8
    
    

php.ini変更後のブラウザ表示状況

ddd.png

*今回は韓国語が対象になったが、他の言語を対応する際にも
 事前にMAMPの言語設定はUTF-8に設定してから進めた方が嵌らなくよいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0