• ベストアンサー

おはよう御座います!SJISの改行について!

お世話になります。 自分のサイトに日記機能を付けたんですけど、改行出来なくて困ってます。 書いた日記を SJIS → EUC-JP に変換を行いDBへ格納しているんですけど、そこで携帯の改行を使っても改行されないまま格納されてしまいます。。。 携帯の改行を\nに変えるみたいな関数ってありますか! 色々見ましたけど分かりやすいのありませんでした。

  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
回答No.2

php504さんの仰ってるのは、改行コードをHTMLに出力するときに、<br>に変換すればよいのではないかと仰ってるのではないかと。 textareaに改行付でデータをPOSTしても、その改行は「\n(または\r\nとか\r)」なのでありHTMLにそれをそのまま出力してもPCのブラウザでも改行されて表示はされません。 なので、 <?php //$dataには携帯で投稿された日記が含まれてる。 $data = str_replace(array("\n", "\r"), "<br>", $data); ?> として、HTMLに出力するときに改行コードを置換してやればよいです。

iinnffoo
質問者

補足

こんにちわ! 有り難う御座いますm(_ _)m☆ これは・・・。 POSTメソッドにだけ有効ですかっ! 確認→修正した場合にGETで受け渡した場合、改行消えててしまいます。。

その他の回答 (2)

回答No.3

>確認→修正した場合にGETで受け渡した場合、改行消えててしまいます。。 登録画面⇒確認画面⇒完了画面 という遷移を行っているんですよね? そこで確認画面から登録画面に戻す際に、GETで受け渡しを行っているのですか?それとも全ての遷移ででしょうか? そしてそれはformタグのmethodのところを「method="GET"」としているということでしょうか? 少々不明瞭な点が多くて、回答しづらいのですが、その前提で下記記述します。前提があっていないなら下記記載のものは読まずに、詳しい画面遷移を教えてください。 formタグでsubmitしたときに、GETメソッドを利用すると、通常ブラウザは、与えられた文字列をURLで利用できる文字列に変換してパラメータを渡します(URLエンコードというもの) それには改行が含まれていたら、改行部分を「%0D%0A」というような形式で変換がされます。(これはWindowsの場合で、%0Dが[\r]%0Aが[\n]です) ソレが行われていれば、PHPで$_GET変数で取得される文字はデコードされて、もとの改行に戻してくるはずです。 ソレが行われていないということですと、携帯電話のブラウザが改行を正常にエンコードしていないということも考えられます。 その場合はPOSTメソッドで送信を行ったほうが良いかと思います。

iinnffoo
質問者

補足

こんにちわ(・ω・) とても詳しい説明してくださりありがとうございます!! フォームメソッドはPOSTになっています(^-^)確認→修正画面の時にGETに変えてしまってます!! 確認→修正画面もPOSTにすべきなんですね!! 以外に難しいんですね。。。かしこまりました!! また一つ勉強になりました。ありがとうございましたっ(*^ー^)ノ♪

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

ウェブ上で改行させたいのなら<br>に変換すればいいのでは

iinnffoo
質問者

補足

それもそうなんですけれど・・。。・。。 段落で改行できたらいいなぁなんておもっていたのです。 今の若い人たちって改行好きですよね。。。 <BR>ではなるんですけれどそれだとふびんかなぁとおもいましたのです。

関連するQ&A

  • sjisとeuc-jpについて

    お世話になります。 sjisとeuc-jpの違いについて教えてください。

    • ベストアンサー
    • PHP
  • UTF-8 環境をSJIS化した後の改行コードの取扱がよくわかりません

    RedHat Linux ES4 にて、デフォルトUTF-8の文字コードを以下のサイトの手順に従いSJIS化して使用しています。 (サイトの例ではEUC⇒SJISなのですが) http://www.k5.dion.ne.jp/~whatsup/linux/euc_to_sjis.html その後、Windows上でシェルスクリプトなどを作成し、ASCIIでアップロードして実行すると『:bad interpreter: そのようなファイルやディレクトリはありません』となります。 Webで調べたところ改行コードが正しくないとの事なのですが、どうにか回避することは出来ないでしょうか?

  • 第2水準のSJISをEUCに変換するには。

     初めて質問させていただきます。  あるファイルのSJISの漢字を  &jcode::convert(\$list[13],"euc","sjis", "z"); でEUCに変換したのですが、POSTGRACEQLのINSERT実行時、第2水準の漢字を使用しているレコードでINVALID EUC_JPというエラーになってしまいます。  第2水準の漢字を変換する方法があれば教えてください。  お願いします。

    • ベストアンサー
    • CGI
  • oracle10g eucのblobをsjisのcharに変換したい

    oracle10g eucのblobをsjisのcharに変換したい oracle10gでblob型でeuc_jpの文字列を格納しています これをshift_jisのvarchar2に変換したいのですが 無理でしょうか? utl_raw.cast_to_nvarchar2では文字化けしました

  • エラーと改行について

    「PostgreSQL」カテゴリと迷ったのですが、こちらに書込みをさせて いただきます。 まだPHPもPostgreSQLもやり始めたばかりの頃に、ShiftJISでDBを作成 したのですが、Accessでのデータ操作が出来るようにEUCでDBを作り 直し、そちらにデータを移行する作業を行っています。 一旦CSVファイルにDBの内容を出力し、新しいDBにデータを書き込むと いう手順で行っているのですが、その際に 「Warning: PostgreSQL query failed: ERROR: Invalid EUC_JP character sequence found (0xa12c) in ~」 というエラーが発生し、一部のデータが書き込まれません。また、改行 部分が無効になっています。(書込み部分で「<BR>に変換したものを「\n」に 変換しています。) 色々と調べていますが、今ひとつ原因がつかめません。どなたか解決法を お教えください。よろしくお願いします。

    • 締切済み
    • PHP
  • 文字コード(EUC->SJIS)についての質問です

    どこに質問して良いのか判断しかねましたので、 今回の開発環境であるVBのカテゴリで質問させていただきます。 さて早速質問ですが、EUC->SJISについてです。 現在あるフリーの.DLLを使ってコード変換をしているのですが、 ある特定の場合に限り、自分の期待通りの結果を返してくれません。 例えば以下のような場合(説明のためアレンジして抜粋)です。 ------------------------------------------------------------------ Dim Euc(6) As Byte Dim Sjis() As Byte Dim szSjis As Integer 'Sjis()のサイズ Euc(0) = 13 Euc(1) = 10 Euc(2) = 13 Euc(3) = 0 Euc(4) = 46 Euc(5) = 0 szSjis = Euc2Sjis(Euc(), Sjis()) '今回使用しているDLL内の関数 ------------------------------------------------------------------ この結果、変換後の値は以下のようになります。 szSjis → 3 Sjis(0) → 13 Sjis(1) → 10 Sjis(2) → 13 このようになり後半が無視されてしまっているような気がするのです。 私が期待している結果としては、46(&H2E)の"."が残ってほしいのですが…。 Euc(4)=0やEuc(6)=0がなにか悪さをしているのでしょうか? 日本語文字コードの知識に乏しいので、的外れな質問かもしれませんが、 このような分野にお詳しい方がいらっしゃいましたら、 どうかアドバイスよろしくお願いします。

  • sjisで書いているPHPとeucのMysqlでの不都合

    カゴヤインターネットルーティングというレンタルサーバーを借りております。 PHPは携帯のサイトのためどうしてもsjisで書かないといけません。 mysqlはeucです。 ソとか能などよくある文字化けをおこすので addslashes()関数をつかって $str='ソフト'; $com = addslashes($str); としてinsertします。 登録・表示は問題ないのですが、どうしても検索ができません。 $com= 'ソフト'; SELECT * FROM item where item_name like '%$com%' とするとどうしても検索できません。 http://sb.xrea.com/archive/index.php/t-4070.html にも同様のことが書かれていましたが、 $str = mb_convert_encoding($str, "EUC-JP", "SJIS"); のように変換してもうまくいきませんでした。 まことにお手数おかけしますが、ご教授お願いします。

    • ベストアンサー
    • PHP
  • EUCからSJISに上手く変換できない

    以下のような関数でEUCからSJISに変換しているのですが、 「渕」という字が文字化けしてしまいます。 どんなふうに修正したらいいか、教えて下さい。 【関数】 void euc2sjis(BYTE *code1, BYTE *code2) {   if (*code1 & 0x01) {     *code1 >>= 1;     if (*code1 < 0x6F)       *code1 += 0x31;     else       *code1 += 0x71;     if (*code2 > 0xDF)       *code2 -= 0x60;     else       *code2 -= 0x61;    } else {     *code1 >>= 1;     if (*code1 < 0x6F)       *code1 += 0x30;     else       *code1 += 0x70;     *code2 -= 0x02;    } } 【補足】 「渕」は、EUCではDEB0      SJISでは9FAEだと思います。

  • PHP,MYSQLで検索が出来ません。sjis→ euc→sjis。

    apache 1.3.34 mysql 4.0.26 php 4.4.2 で運用しています。 HTML 入力 sjis → DATA sjis →読み出し sjis で運用していたのですが、文字化けのおかげで データを EUC にしました。 HTML(入力)sjis→EUC→HTML(読み出し)sjis に変更しました。 参考書を頼りに、変換しながらやっているのですが データが漢字(ひらがなも同じかも)の場合に検索が出来ません **他はうまくいっています***入力、表示ともに 入力時 function cnv_dbstr($string) { $string = htmlspecialchars($string); $string = mb_convert_encoding($string, "EUC-JP", "SJIS"); if (!get_magic_quotes_gpc()) { $string = addslashes($string); } return $string; } 出力時 function cnv_dispstr($string) { $string = mb_convert_encoding($string, "SJIS", "EUC-JP"); $string =nl2br($string); return $string; } 今までは下記のsqlで出来ていたのですが、この福岡市を cnv_dbstr(福岡市) にしてみたりしたのですが検索が出来なくて データが出てきません。 $sql = "select * from mem where area = 1 and cate = '福岡市'" ; $rst = mysql_query($sql, $con); どなたか、アドバイス宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • phpがsjisファイルを勝手にeuc-jpに

    変更してブラウザに表示してしまうのですが どうしたらこのような変換をやめさせることができるでしょうか? phpinfo()を見てみると  PHP Core ・・・・・・・・・・・・ default_charset EUC-JP(local value) EUC-JP(master value) ・・・・・・・・・・・・  mbstring ・・・・・・・・・・・・ mbstring.http_output EUC-JP(local value) EUC-JP(master value) mbstring.internal_encoding EUC-JP(local value) EUC-JP(master value) ・・・・・・・・・・・・ となっています。 このEUC-JPをsjisに変更したらいいのでしょうか? そうだとするとその方法を教えてください。

    • ベストアンサー
    • PHP