• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mb_conver_encoding()の挙動)

mb_convert_encoding()の挙動について質問

このQ&Aのポイント
  • 質問文章からセンセーショナルなタイトルを30文字前後で生成します。
  • 就職活動のために内定を頂いた会社から、初心者だけど独学の実力を見るための課題が出されました。問題は、uibuntu Linuxでバッチプログラムを作成している際に、文字コードをEUC-JPでcsvに出力する際に文字コードが変換されていないことです。質問者はmb_convert_encoding()関数を使用して文字コードを変換しましたが、表示される文字コードはASCIIでした。php.iniの設定も確認しましたが、問題は解決しません。この問題についてアドバイスをいただけないでしょうか。
  • 初心者の質問:mb_convert_encoding()関数を使用して文字コードを変換したが、表示される文字コードがASCIIになってしまう問題が発生しています。php.iniの設定も確認しましたが、解決できません。どのように対処すれば良いかアドバイスをいただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

kkc -c じゃなくて nkf --guess で調べてみては?

prr4e
質問者

補足

ご親切に対応して下さって有難う御座います。 言われた通り、nkf --guess file名で調べてもやはりASCIIと表示されます。 mb_convertの使い方にLinuxもwinも関係ないとは思ってはいるのですが、 関係があrったりするのでしょうか。 回答に再々の質問で申し訳ありませんが、宜しくお願い致します。

その他の回答 (4)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.5

>autoをASCIIに変えてもダメと言う事ですよね。 ごめんなさい、説明がわるかったのかもしれません。 「ASCII」のファイルはSHIFT-JISでもEUCでもUTF8でもなく、 ただの「ASCIIテキスト」だということです。 文字コードがいろいろ必要なのは、マルチバイト文字があるからです マルチバイト文字を含んでいないファイルは、変換の必要もないし 変換することは理論上できません。 #4の補足は改行コードだけ変換する可能性があることを提示しただけで 理解できないのであれば忘れてもらって結構です。 ちなみに前回の書き込みは完全に私の勘違いで、LF→CR+LFではなく CR+LF→LFですね。失礼しました。

prr4e
質問者

補足

ご親切に再度回答をして下さって有難う御座います。 ただのASCIIだとダメだと、今回の件で本当に勉強になりました。 仕様としては改行コードはLFでした。 mb_convert_encodingで変換出来ないのであれば、 改行コードも一緒だと思っていましたが、 改行コードだけは可能なんですね。 本当にありがとう御座います。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

まぁ最初からASCIIならしょうがないですね・・・ ちなみにEUCの環境は改行コードがLFだと思います SHIFT-JISやUTF8を想定しているなら絶対ではないですが往々にして CR+LFに変換の必要があるかもしれません。 よくよく仕様の確認が必要です。

prr4e
質問者

補足

ご回答有難う御座います。 php.iniのdefault_chara等は全てEUC-JPに変えてやってみましたが、 やはりダメでした。 元々ASCIIだと mb_convert_encodeing($str,"EUC-JP","aut"); のautoをASCIIに変えてもダメと言う事ですよね。 元データの保存形式をEUC-JPに変えてもデータがシングルバイトなので、変換は効かないと言う事だと前の方の回答で認識してしまったのですが・・・ 以上、宜しくお願い致します。

  • t140
  • ベストアンサー率39% (59/150)
回答No.3

元データがホントにASCIIコードのみならマルチバイトコードを含んでないので 日本語EUCに変換できなくて当然じゃないでしょうか? 元データにマルチバイトコードが含まれてることを確認できていますか?

prr4e
質問者

補足

ご親切に有難う御座います。 元データは↓のアクセスログを 2011/04/26 00:00:00 /path/url/top.html 245 のアクセス集計を出力した(↓)内容になります。 00:00 0 0 0 245 どちらもマルチバイトのデータは含んでいないのです。 尚、元データを nkf --guess で調べたら やはりASCIIでした。 元データが日付とシングルバイトのデータだと 変換されないとは知りませんでした。 教えて下さってありがとう御座います。

  • bakaok
  • ベストアンサー率22% (33/148)
回答No.1

>独学の実力を見るうえで課題を出されました。 それ人自分でやらないと意味ないだろ。 人に聞いてどうする? こんな事が解けないなら内定辞退しろよ。 (独学でできると嘘をついて貰った内定なんて入社したらあっという間にボロが出てどうせ使えない奴の烙印を押されて退社することになるぞ)

関連するQ&A