文字コード変換 【解決方法Q&A/疑問攻略/ブログ】
Q&A:文字コード変換について? 解決方法/評価
・perlでの日本語が入った変数同士のパターンマッチがうまくいきませんperlでの変数同士のパターンマッチがうまくいきませんこのどちらの変数も、出力してみたところ、改行文字などは含まれて降りません。コードはウィンドウズのメモ帳で編集しております。$column[4]$kobufif($column[4] =~ /$kobuf/){出力処理}ifぶんの条件の書き方が間違っているのでしょうか?$がついているので、エスケープ処理が必要なのでしょうか?変数を""で囲わないといけないのでしょうか?文字コードを変換しないといけないのでしょうか?文字コード変換以外は色々試してみたのですが、うまくいかなくて困っています。よろしくお願いします。・perlで携帯へメ−ルを送信した際の文字化け失礼します。perlで携帯へメールを送信した際の文字化けについて相談したい事が有ります。perlでunicode::Japanese モジュールを使い utf-8 からs-jisに変換→メールサービスに送信→メールサービスが携帯へ転送という流れで携帯へメールを転送しているのですが、auやdocomoの携帯電話では文字化けがおこらず、iphoneだと、文字化けが起きてしまいます。iphoneがutf-8で文字コード変換を行っていて、s-jisだと文字化けを起こしてしまうようなのですが、auやdocomoの携帯電話は、utf-8だと文字化けを起こしてしまいます。どちらの携帯電話でも、文字化けしない、文字コードはあるのでしょうか?よろしくお願いします。・SQLServerから取得した日本語がPHPで文字化けとても困っています。よろしくお願いします。SQLServerから取得した日本語が【A環境】で文字化けします。【B環境】ではうまく表示されます。以下にA環境のことを書きます。[PHP]5.2.9ファイル保存形式 UTF-8[SQLServer]2008照合順序 Japanese_CI_AS(文字コードSJIS?)[現象](1)SQLServerから取得した日本語が、PHP上で文字化けする。(2)PHPから渡した日本語が、SQLServerに格納すると文字化けしている。●表示させるときは、以下のように文字コード変換をしてる。mb_convert_encoding(値, 'utf-8', 'sjis-win')●SQLServerへ渡すとき(ストアドプロシージャ)は、以下のようにコード変換している。mb_convert_encoding(値, 'sjis-win', 'UTF-8')[うまくいくこと](1)SQLServer上で同じプログラムを実行すると、日本語は正しく格納される。(2)PHP上で定義した日本語はPHP上で正しく表示される。●B環境(正しく表示される環境)との違うところ●B環境では、[PHP]は5.2.13を使用●B環境と合わせたこと●・SQLServerのデータベースの中身・PHPファイルの中身・PHP.iniの設定・PHPの拡張フォルダの中身↑上記4つは自分では合わせたつもりですが、何かぬけてるかも??[質問]B環境では正しく表示され、A環境では文字化けする理由はなんでしょうか。文字化け回避できる方法がわかる方がいらっしゃいましたら、ぜひ教えてください。よろしくお願いします。・波ダッシュ(〜)・全角ハイフン(―)の文字化けを解消する方法について教えて下さい。(PostgresからのダンプデータをMySqlに取込む際に「〜」、「―」の文字が 文字化けしてしまいます。)データベースPostgreのバックアップとしてpg_dumpコマンドを使いバックアップを取得しています。その際、MySqlにも取込むため出力後のダンプデータに対して文字コード変換をしています。MySqlに取込んだ後に、utf-8への文字コード変換をしたにも関わらず、ブラウザで表示して見ると「〜」、「―」が?になってしまうため、悩んでいます。(住所や説明文等で「〜」が使われている箇所は全て文字化けしてしまっています。)文字コードとしてはEUC⇒UTF-8の文字コード変換となりnkfを使い変換をしています。ダンプ(Postgre)からインサート(MySql)までの手順としては、1、pg_dump -t table_a -ad DB_A > table_a.sql (PostgresからのDump)2、cat table_a.sql | sed -e "s/table_a/TABLE_A/" > ins_table_a.sql (テーブル名を大文字から小文字に変換)3、nkf -w --overwrite ins_table_a.sql (EUCからUTF-8へ文字コードを変換)4、mysql -u root DB_A < ins_table_a.sql > ins_table_a.log (文字コード変換後のダンプデータをmysqlに取込み)5、データの取込み自体は完了していますが ブラウザで表示確認をすると文字化けが発生しています。現状、文字化けが発生しているレコードに対して直接INSERT文を使いデータを入れ直すと解消されることが分かっています。(データ件数が膨大なため、手動で入れ直すのは解消の対策として現実的ではありません。)入れ直しの際、ターミナルを使っていますが画面の文字コードがUTF-8になっており、(手動入力で解消することから考えると)手順3での文字コード変換が怪しいと考えています。本件の問題としては「波形問題」や「wavedash問題」として古くからあるらしく、ネット上にはいくつか解決策もありました。ですが、中々具体的な方法が見つけられませんでした。DBからの呼び出し処理として、javaを使用していますが先ずはDB側で解消出来る方法について調査しています。どなたか本内容での文字化けを解消する方法についてご教示をよろしくお願い致します。・PEARのNet_POP3でメーラー作成PEAR/Net_POP3で簡易メーラーを作りたいのですが、(メール)データ取得後の日本語変換ってどうやるんでしょうか?・・.以下のような感じで作っておりメールの受信は出来ていますが、文字化け?(文字コード変換?)のやり方がさっぱりですメールではmime?という文字?を使うとどっかで見たのですが、調べてもさっぱりでしたプログラムはド素人(本職ではない)ですが、簡単なプログラムくらいは組めますどなたか愛の手を!お願いします以下は現在のコードです・・・・・・・・・・・・・・・・・・・・・・・<?phprequire_once 'Net/POP3.php';//-----------------------------------function get_mail($HOST, $USER, $PASS){$hostinfo = array();if(eregi('^(.+):([0-9]+)$', $HOST, $hostinfo)) {$host = $hostinfo[1];$port = $hostinfo[2];} else {$host = $HOST;$port = '110';}$pop = new Net_POP3();$ret = $pop->connect($host, $port);if ( !$ret ) {return false;}// ユーザ名 と パスワード でログイン$ret = $pop->login($USER, $PASS);if ( !$ret ) {return false;}// メールボックスの状態$num = $pop->numMsg();// メールなしif ( $num == 0 ) {$pop->disconnect();return 'メールなし';}// 1番目のメールを受信する$data = $pop->getMsg( 1 );$pop->disconnect();return $data;}//-----------------------------------// Yahoo!メールからデータ取得$data=get_mail('pop.mail.yahoo.co.jp', 'Yahoo!ID●●●●', 'Yahoo!パスワード●●●●');// データ表示echo $data;?>・Linuxサーバーで文字コード変換を行うコマンド"nkf"を使用しようとすると「-bash: nkf: command not found」とメッセージが出ます。この現象の原因と解決方法をご存知の方がおられましたら、ご教授ください。よろしくお願いします。・【Ruby1.9.2】文字コード変換について【UTF-8⇔Shift-JIS】ご覧頂きましてありがとうございます。現在、Rubyを用いてcsvファイルを読み込み、加工してテキストファイルに出力するプログラムを作っています。その際なんですが、以下の文字コードの違いに悩まされています。csv:Shift-JISプログラム内で読み込む:Shift-JIS⇒UTF-8出力先テキストファイル:Shift-JISRubyはUTF-8で読み込まないと、”カンマ区切り”で変数や配列にデータを入れることができません。読み込みのShift-JIS⇒UTF-8はできるのですが、出力の際に再変換を行おうとすると、incompatible character encodings: UTF-8 and Shift_JISというエラーが出て実行できません。以下、コード例です。---コードここから---open(***.csv, "r:Shift_JIS:UTF-8"){|f| while lines = f.gets line = lines.chomp!.split(",") if line[num].include?("abc") str = str + line[num] str = str.tosjis end … … end}……f = File::open("***.txt", "w") f.print strf.close---コードここまで---ちなみに、strをtosjisする方法でなく、ファイル書き込みの際に"w:UTF-8:Shift_JIS"としても同じでした。どなたか解決策をご教授ください。なお、csvファイルとテキストファイルの文字コードは決まっており、変更ができません。よろしくお願い致します。・Wordpressを別ドメインでルート表示するように設定したら既存の別ドメインHTMLサイトが文字化けするようになってしまった。はじめまして、サーバー側の設定はまったくもって疎いのでご教授お願いします。サーバーはロリポップを使用しています。今まで独自ドメインでHTMLのサイトを運用していました。独自ドメインアドレス:http://ホームページ.bzファイル設置場所:/(ルートフォルダ)今回上記とは別に、blogを始めようとWordpressをインストールし作成。このブログ用の独自ドメインを新たに取得。ブログの独自ドメインをルート表示にしようと、手順従いwordpressのフォルダからルートに.htaccessとindex.phpを移動し設定。ブログドメインアドレス:http://ブログ.comファイル設置場所:/(ルートフォルダ)しかし、ルートにindex.htmlとindex.phpがあるとindex.htmlが優先されてしまうみたいなので、/homeを作成し既存のhtmlファイル郡を/homeに移動。ロリポでドメインのルートフォルダが指定できたので、独自ドメインアドレス:http://ホームページ.jpファイル設置場所:/home/に変更したのですが、既存のhttp://ホームページ.jpで表示はできるんですが、文字化けしてしまいます。htmlファイルをUTF-8に文字コード変換して一応表示できるようにはなったのですが、フリーCGIの掲示板等はやはり文字化けしたままです。CGIのUTF-8化がわからなくて・・・ブログをルート表示させるため.htaccessをルートに移動した影響でしょうか?.htaccessの中には、AddDefaultCharset UTF-8と書いてあるせいだと思うのですができれば、http://ホームページ.jpは、shiht-JIS環境で運用できればと思います。Shift-JISと UTF-8を混在して使用できるようにする方法はあるでしょうか?根本的に間違ってるかも知れませんしわかりづらくて申し訳ありませんが、解決法がありましたらをご教授お願いします。(現在の構成)/|-- .htpaccess(blogフォルダから移動)|-- index.php (blogフォルダから移動)|-- home/- index.html cgi-bin/等 (http://ホームページ.jp) shift-JIS|-- blog/ - wp-admin/等 (http://ブログ.com) utf-8・初心者ですが、教えてください。EBCIDKとは、どのようなコードですか?VBの文字コード変換で使えますか?・再質問:EXCEL VBA ランダムで小文字英数字作成ツールを作りたいと思います。ご教授願います。EXCEL VBA ランダムで小文字英数字作成ツールを作りたいと思います。ご教授願います。 以前、下記のVBA教わったのですが、ランダムの英数字の作成は出来るのですが、Excel再起動すると、ランダム英数字が同じ英数字になってしまいます。例:1回目 ksif1gus2回目 jdur4h5h3回目 sifjsy4s↓再起動後1回目 ksif1gus2回目 jdur4h5h3回目 sifjsy4sDim i As IntegerDim introw As IntegerDim intMin As IntegerDim intMax As IntegerDim intRnd As IntegerDim strData As StringintMin = 48intMax = 122strData = ""'1行目から最終行までFor introw = 1 To Cells.SpecialCells(xlLastCell).Row'A列に値が入っている場合、ランダム文字列をB列にセットIf Cells(introw, 1) <> ""ThenstrData = ""'8文字固定For i = 1 To 8Do While True'ランダムで数値を生成intRnd = Int((intMax - intMin + 1) * Rnd + intMin)If intRnd >= 48 And intRnd <= 57 Then'半角数字が取得できたExit DoElseIf intRnd >= 97 And intRnd <= 122 Then'半角小文字英字が取得できたExit DoEnd IfLoop'取得した数値を文字コード変換し、最後尾にセットstrData = strData & Chr(intRnd)Next i'8文字作成したら、B列にセットCells(introw, 2) = strDataEnd IfNext introwよろしくお願いします。
●気になる商品を検索
●気になる話題を検索