データベース文字コードをEUCからSHIFT-JISに変更する際の問題

このQ&Aのポイント
  • データベースの文字コードをEUCからSHIFT-JISに変更しましたが、一部のページで文字化けや表示の問題が発生しています。何故、このような差が起こるのでしょうか?phpファイルの保存形式もEUCからSHIFT-JISに変更しました。
  • 問題の発生により、ページが崩れたり表示されない状態になっています。文字コードの変更に関する適切な設定や処理が必要なのか、解決のための手段を教えてください。
  • データベースの文字コードをEUCからSHIFT-JISに変更した際に、一部のページで文字化けや表示の問題が発生しています。phpファイルの保存形式も変更しましたが、解決できず困っています。知恵をお貸しいただけないでしょうか?
回答を見る
  • ベストアンサー

文字コードをEUCからSHIFT-JISに変更しました。

 データベースの設定で今まで文字コードをEUCに設定していましたが、一般的にはSHIFT-JISを使用した方が良いというアドバイスを受けて、今回からSHIFT-JISに変更することにしました。  データベースの設定でSHIFT-JISに変更し、 各テーブルのデータもSHIFT-JISで文字化けが起こらないようにエンコーディングもしました。  そして、各phpファイルの保存形式をEUCにしていたものを全てSHIFT-JISとして保存もしました。しかし、ページによっては文字化けがまだ起こっていたり、表示すらできないページもあります。 きちんと表示されているページもありますが。  何故、このような差が起こるのでしょうか? 下記は、ページが表示されないphpファイルのソースです。 ファイルをEUC形式で保存すると画面は崩れていますが表示されます。 しかし、SHIFT-JIS形式で保存すると真っ白になります。 ちなみにソースは、適当なものなのでその部分はスルーしてください。 いろいろ試みたのですが解決できず、本当に困っています。 知恵をお貸し下さい。 よろしくお願い致します。 <?php echo <<< HTML <html lang="ja"> <head> <style type="text/css"> <!-- div { border: 1px solid #77aaff; background-color: #ccccff; text-align: center; font: italic 0.8em Verdana; } --> </style> <script type="text/javascript"> <!-- var ele, max, count = 0; var widthList = new Array(); function getGraph() { ele = document.getElementsByTagName("div"); if (!ele) return; var tmp = new Array(); for (var i = 0; i < ele.length; i++) { tmp[i] = widthList[i] = ele.item(i).style.width.replace("px", ""); } // max = tmp.sort(function(a, b) { return(b - a); })[0]; max = 10000; (widthList) && graph(); } function graph() { for (var i = 0; i < widthList.length; i++) { var now = (count >= widthList[i]) ? widthList[i] : count; ele.item(i).innerHTML = ele.item(i).style.width = now + "px"; ele.item(i).innerHTML = ele.item(i).style.width.replace("px", "P"); } if (count < max) setTimeout("graph();", 20); // グラフを表示する速さ count += 1; // グラフの増加量 (px) } // --> </script> </head> <body onload="getGraph();"> <form action="../AAA/AAA.php" method="POST" name="myFORM"> <center> ポイントレース </center> <br> <br> <table width="15%" align="right" style="border:solid 1px #000000"> <tr> <td>$Name さん</td> </tr> <tr> <td>総ポイント</td><td>$TotalAMT</td> </tr> <tr> <td>今月のポイント</td><td>$Mpoint</td> </tr> </table> <br> <br> <br> <br> <table border="2" width="100%"> <tr> <td> <table border="0"> <tr> <td> HTML; ?>

noname#92587
noname#92587
  • PHP
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

> 一般的にはSHIFT-JISを使用した方が良いというアドバイス そのアドバイスに従わない方がよかったのではないかと思います。 shift-JISよりはeuc、eucよりはutf-8の方が、データベースの コード体系として望ましいと思います。 可能であればutf-8に変更するのがよいと思いますが、 むずかしそうであれば、eucに戻すことを検討なさってみてはいかがでしょうか。

noname#92587
質問者

補足

 ありがとうございます。 確かにEUCに戻した方が賢いのかもしれません。 それでも問題はないといえばないんですが、 mailtoでメーラーを起動した時、 デフォルトで件名に文字を入力しておきたいんですよ。  EUCだと文字化けして表示されたんですが、 その点ってEUCでも改善できるものなのでしょうか?

その他の回答 (2)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.3

一般的には EUCかUTF-8を使います 最近はUTF-8が増えつつあります。 戻したほうが無難です。

noname#92587
質問者

補足

わかりました。 EUCの方が無難ということなので戻します。 ありがとうございました。

回答No.2

どこかでエラーになっていませんか? コマンドラインで動かしてエラーにはなりませんか? また、出力されるHTMLにも文字コードを明示的にするといいと思います、。

関連するQ&A

  • テーブルの中の文字を縦に表示する方法

    テーブルの中の文字を縦に表示する方法はありますか? 今はわからないので、<br>で無理やり改行しています。 もっとスマートな方法があれば教えてください。 <style type="text/css"> table { width: 50%; height: 20px; border: 2px #2b2b2b solid; } td { border: 2px #2b2b2b solid; } </style> <table> <tr> <td>よこ</td> <td>た<br>て</td> </tr> </table>

    • 締切済み
    • CSS
  • ●tableをCSSで書き直すには(HTMLソース付き)

    いつも勉強させていただいております。 今回は質問をさせていただけないでしょうか。 上の表の枠のように少し立体感があるようにしたいと思います。 これを、CSSにしたいのですが、border-styleをいろいろ試しても同じようになりません。 どのようにすれば良いでしょうか? <html> <STYLE TYPE="text/css"> <!-- .TTT { border-style:ridge; padding:0px; border-width:1px; } --> </STYLE> <body bgcolor="#FF88FF"> <table width="270" border="1" cellpadding="0" cellspacing="0" > <tr> <td>こんな感じにしたいです。</td> <td>BBB</td> </tr> </table> <br> <table style="width:270px;" class="TTT"> <tr class="TTT"> <td class="TTT">なぜか、こんな感じになってしまいます。</td> <td class="TTT">DDD</td> </tr> </table> <br> </body> </html>

  • IEではうまく行くのですが他のブラウザでも表示できるように…

    下記のようにしたのですが、IEではうまくゆくのですが、 他のブラウザではできません。 同じようにするにはどのように調整したらよいのか教えてください。 <DIV> <SPAN style="overflow:hidden;width:30px"> <TABLE border="1" width="100%"> <TR bgcolor="silver"><TD>A</TD></TR> </TABLE> </SPAN> <SPAN id="title" style="overflow-y:scroll;overflow-x:hidden;width:150px;"> <TABLE border="1" style="table-layout:fixed;width:150px"> <TR bgcolor="silver"><TD>C</TD><TD>D</TD><TD>E</TD></TR> </TABLE> </SPAN> </DIV> <!--本体部分--> <DIV> <SPAN id="fixedcols" style="overflow:hidden;overflow-x:scroll;width:30px;height:80px;"> <TABLE border="1" style="width:100%" bgcolor="#ffffcc"> <TR><TD>F</TD></TR> <TR><TD>K</TD></TR> <TR><TD>P</TD></TR> <TR><TD>U</TD></TR> </TABLE> </SPAN> <SPAN id="maincols" style="overflow:scroll;width:150px;height:80px" onscroll="fnc_scroll()"> <TABLE border="1" style="table-layout:fixed;width:150px"> <TR><TD>H</TD><TD>I</TD><TD>J</TD></TR> <TR><TD>M</TD><TD>N</TD><TD>O</TD></TR> <TR><TD>R</TD><TD>S</TD><TD>T</TD></TR> <TR><TD>W</TD><TD>X</TD><TD>Y</TD></TR> </TABLE> </SPAN> </DIV> <SCRIPT language="javascript"> <!-- function fnc_scroll(){ document.all.item('fixedcols').scrollTop=document.all.item('maincols').scrollTop; document.all.item('title').scrollLeft=document.all.item('maincols').scrollLeft; } --> </SCRIPT>

  • 楽天ブログ・日記の下に表示のおすすめアイテムって・・・。

    ブログ初心者です。 いつかはアフェリエイトまでできると良いな~と思っていますが、まだその前の段階ですでにつまづいております・・・(汗) メインの日記の下に、おすすめアイテムを載せられるように設定したのですが、こちらの画像は私自身で気にいった商品を載せられるのですよね・・・。 (もしかして、楽天の広告ページ??) 【Recommend Item】ってタイトルに出ています。 今まで、自動的にブログの内容に合うようなアイテムが表示されているような気がしますが、好きな雑貨などを載せたいのですが・・・。 もし自分で出来るならどのように画像を載せればいいのでしょうか?? たとえばですが、アフェリエイトのやり方のページで出ていたこの商品を載せたい場合、この部分をどこに載せるとブログのおすすめアイテムに載せられるのか教えてください。 すみません・・・。 パソコンが苦手で、↓これも間違っているのかな?と思っています。 <a href="http://***" target="_blank"> .:*:.*.:*:.2本ベルトのフォーマルシューズ .:*:.*.:*:. </a>        ************** さらに、画像の載せ方が分からないのですが、こちらのテンプレートを製作した方は全然ブログをされていないようなので、もし、分かる方でいらっしゃったら教えてください! コチラは、トップやアフェリエイト部分のテンプレートらしいのですが 。 <center><table cellspacing="3" cellpadding="0" width="560"><tr><td width="33%"><table bgcolor="#ffffff" cellspacing="0" cellpadding="0" style="border:2px solid #CCFFFF"><tr><td style="border:12px dotted #E0FFFF"><table cellspacing="0" cellpadding="2" style="border:2px dotted #CCFFFF" bgcolor="FFFFFF" width="140" height="140"><tr><td align="center" valign="middle">画像1</td></tr></table></td></tr></table></td><td width="34%"><table bgcolor="#ffffff" cellspacing="0" cellpadding="0" style="border:2px solid #CCFFFF"><tr><td style="border:12px dotted #E0FFFF"><table cellspacing="0" cellpadding="2" style="border:2px dotted #CCFFFF" bgcolor="FFFFFF" width="140" height="140"><tr><td align="center" valign="middle">画像大2</td></tr></table></td></tr></table></td><td width="33%"><table bgcolor="#ffffff" cellspacing="0" cellpadding="0" style="border:2px solid #CCFFFF"><tr><td style="border:12px dotted #E0FFFF"><table cellspacing="0" cellpadding="2" style="border:2px dotted #CCFFFF" bgcolor="FFFFFF" width="140" height="140"><tr><td align="center" valign="middle">画像3</td></tr></table></td></tr></table></td></tr><tr><td colspan="3" align="right"><font style="font-size:10px"> </a></font></td></tr></table></center> 画像1・2・3の部分に、何を入れるとショップの商品とリンクするのでしょうか?? どうぞ、よろしくお願いいたします。

  • テーブルの線について

    下記のようなHPをつくっています。 一番大きなテーブルの上下の線を消すにはどこをどのようにすればいいのでしょうか? ご回答いただけると嬉しいです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS"> <title></title> <style type="text/css"> <!-- BODY TD { FONT-SIZE: 10pt } A.menu:link,A.menu:visited { BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 15px; BORDER-TOP: #666666 1px solid; DISPLAY: block; PADDING-LEFT: 15px; PADDING-BOTTOM: 5px; BORDER-LEFT: #666666 1px solid; COLOR: #ffffff; PADDING-TOP: 12px; BORDER-BOTTOM: #666666 1px solid; HEIGHT: 40px; BACKGROUND-COLOR: pink; TEXT-DECORATION: none } A.menu:hover,A.menu:active { BORDER-RIGHT: #ffffff 1px ridge; PADDING-RIGHT: 15px; BORDER-TOP: #ffffff 1px ridge; DISPLAY: block; PADDING-LEFT: 15px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ffffff 1px ridge; COLOR: gray; PADDING-TOP: 12px; BORDER-BOTTOM: #ffffff 1px ridge; HEIGHT: 40px; BACKGROUND-COLOR: #ffffff; TEXT-DECORATION: none } --> </style> </head> <body bottommargin="0" background="sozai/kabegami.gif" topmargin="0"> <table height="100%" cellspacing="1" cellpadding="1" width="730" align="center" bgcolor="#c0c0c0" border="0"> <tr> <td bgcolor="#ffffff" colspan="2"> </td> </tr> <tr> <td bgcolor="#ffffff" colspan="2" height="120" background="sozai/title_back.gif"> <p align="center"><img height="50" alt="" src="sozai/title.gif" width="369" border="0"></p></td> </tr> <tr> <td bgcolor="#ffffff" colspan="2" valign="top" align="left"><br> <table cellspacing="0" cellpadding="0" width="155" align="left" border="0"> <tr> <td> <table style="MARGIN-TOP: -2px; FONT-WEIGHT: bold; WIDTH: 146px; FONT-FAMILY: 'mspゴシック'; HEIGHT: 241px" cellspacing="3" cellpadding="0" width="146" align="center" border="0"> <tr> <td style="BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 15px; BORDER-TOP: #666666 1px solid; PADDING-LEFT: 15px; PADDING-BOTTOM: 10px; BORDER-LEFT: #666666 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #666666 1px solid" align="center"><font color="gray">Top</font></td> </tr> <tr> <td><a class="menu" href="">News</font></a></td> </tr> <tr> <td><a class="menu" href="">作品集</font></a></td> </tr> <tr> <td><a class="menu" href="">お教室情報</font></a></td> </tr> <tr> <td><a class="menu" href="">Shopping</a></td> </tr> <tr> <td><a class="menu" href="">お友達サイト</a></td> </tr> </table> <p align="center"> <img src="http://counter1.fc2.com/counter_img.php?id=47426"><br> </p></td></tr></table> <table cellspacing="1" bgcolor="#c0c0c0" border="0" cellpadding="20" width="565" align="left"> <tr> <td bgcolor="#ffffff" ><br> <br><br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br><br> <br> </td> </tr> </table> </td></tr> <tr> <td bgcolor="#ffffff" colspan="2"> <p align="center"> <font color="#808080">Copyright &copy; 2005-2007 princess-ichigo, All rights reserved.</font></font></p></td> </tr> <tr> <td bgcolor="#ffffff" colspan="2"><br> </td> </tr> </table> </body></html>

    • ベストアンサー
    • HTML
  • 表示させた文字を1つだけ戻す方法は?return?

    下記コードのif文のところでelseになった場合にreturnにしています。 returnではなくstLoad()にすれば、全てリセットされ最初からやり直しになりますが、 最初からやり直しでなく、一致しているところまで残して途中からやり直す場合は どのようにすればいいでしょうか。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <script language="JavaScript"> <!-- var i = 1; var stMihon; function stLoad(){ document.getElementById("anser").innerHTML = ""; } function st(n){ stMihon = "1357924680".substring(0,i); document.getElementById("anser").innerHTML += n; if(document.getElementById("anser").innerHTML==stMihon){ i++; }else{ alert("もう一度"); return; //不一致のときに1文字消し入力前に戻す } } //--> </script> <style type="text/css"> p{width:330px; padding:5px; background-color:#ddd;} #anser{color:#f00;padding:10px;width:330px;} table{border:1px solid #000;background-color:#eee;width:200px;height:220px;margin-left:60px;} td{border:1px solid #000;font-size:20px;text-align:center;} </style> </head> <body onload="stLoad()"> <p>下記ボタンを押して1357924680と<br>入力して下さい。</p> <div id="anser"></div> <table> <tr> <td onClick="st(1)">1</td> <td onClick="st(2)">2</td> <td onClick="st(3)">3</td> </tr> <tr> <td onClick="st(4)">4</td> <td onClick="st(5)">5</td> <td onClick="st(6)">6</td> </tr> <tr> <td onClick="st(7)">7</td> <td onClick="st(8)">8</td> <td onClick="st(9)">9</td> </tr> <tr> <td colspan="2" onClick="st(0)">0</td> <td id="en" onClick="st('.')">.</td> </tr> </table> </body> </html>

  • javascriptのフラグの使われ方 コード有

    javascriptの初心者です。 サンプルコードを使って勉強しているので、 フラグの使われ方について質問があります。 下にあるコードは、 4枚縦並びになった写真を、ボタンで1枚ずつスライドするスクリプトです。 その中にあるflag変数は、おそらくボタンを2度押しした時に、 一気に2枚スライドをするのを防ぐための、関数使用中を示す変数と思います。 ここで2つ質問です。 ●flag変数はここでは、何を表してますか? ●initable関数を抜ける前、後、どちらでスライド動作をしていますか? ----私の考え方(思い込み?)------------ このコードでちゃんと画像がスライドするのですが、 flag = ture とする場所が遅すぎる感じがします。 というのも、 slidetable関数の中に、ifがあるので その条件がクリアするまで、関数から抜けだせません。 やっと抜けだしてはじめて、flag = trueと設定する。 flag変数が、使用中を表すものだとしたら、 スライド関数に行く前に、flag = tureとして、 「関数は使用中なので、今クリックしてもreturnしますよ」とさせるのでないか? 実際は、どのタイミングで動き出すものかよくわかりません。 chromeでブレークポイントを作って、 1つずつ動かすと、initableを抜けだした後に、 HTMLコードの所に移動したぞ。 この流れだったら、納得するけど。。。 --------------------------- スライド関数の処理は とりあえずどんな処理をするか受け付ける。(まだ動き出さない) ↓ flag =tureとして、inittable関数を抜けだして ↓ 動かす場所に、処理を一気に適用。 ---------私の考え方(思い込み?)以上------------ -------------------------------------------- <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>東京の風景</title> <script type="text/javascript"> <!-- var tablemax = 4; var tablewidth = 260; var step = 14; var num = 0; var offset = 0; var flag = false; function inittable(n){ if (flag) return; num += n; if (num < 0) { num = 0; return; } if (num >=tablemax) { num = tablemax-1; return; } offset = n * step; count = tablewidth / step; slidetable(); flag = true; } function slidetable(){ imgtables.style.pixelLeft -= offset; count--; if (count > 0) setTimeout("slidetable()",10); else flag = false; } --> </script> </head> <body> <img src="left.gif" onMousedown="inittable(-1)" style="position:absolute;top:220px;left:20px;"> <img src="right.gif" onMousedown="inittable(1)" style="position:absolute;top:220px;left:60px;"> <div style="position:absolute;top:10px;left:10px;clip:rect(0px 260px 200px 0px)"> <table id="imgtables" border="0" cellspacing="0" cellpadding="0" style="position:absolute;top:0px;left:0px;"> <tr> <td> <table bgColor="#ccccff" width="260"> <tr><td >東京フォト(1)</td></tr> <tr><td><img src="pic1.jpg" width="260" height="200"></td></tr> </table> </td> <td> <table bgColor="#ccccff" width="260"> <tr><td>東京フォト(2)</td></tr> <tr><td><img src="pic2.jpg" width="260" height="200"></td></tr> </table> </td> <td> <table bgColor="#ccccff" width="260"> <tr><td>東京フォト(3)</td></tr> <tr><td><img src="pic3.jpg" width="260" height="200"></td></tr> </table> </td> <td> <table bgColor="#ccccff" width="260"> <tr><td>東京フォト(4)</td></tr> <tr><td><img src="pic4.jpg" width="260" height="200"></td></tr> </table> </td> </tr> </table> </div> </body> </html>

  • ボタン押しで表示した文字を1文字だけ自動で戻す方法

    下記コードのif文のところでelseになった場合に、 一致しているところまで残して途中からやり直す場合は どのようにすればいいでしょうか。 ・一致、不一致のいずれも入力値をブラウザ上に表示させる ・不一致のとき、全てリセットさせずに、間違った箇所からやり直させる。 ・一致させる文字が円周率に変更してもできる といったことを可能にしたいです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <script language="JavaScript"> <!-- var i = 1; var stMihon; function stLoad(){ document.getElementById("anser").innerHTML = ""; } function st(n){ stMihon = "1357924680".substr(i-1,1); document.getElementById("anser").innerHTML += n; if(n==stMihon){ i++; }else{ alert("正しい数字を入力してください。\nでは、続きから"); document.getElementById("anser").innerHTML.substr(0,i-1); return; //このreturnは不要?? } } //--> </script> <style type="text/css"> p{width:330px; padding:5px; background-color:#ddd;} #anser{color:#f00;padding:10px;width:330px;} table{border:1px solid #000;background-color:#eee;width:200px;height:220px;margin-left:60px;} td{border:1px solid #000;font-size:20px;text-align:center;} </style> </head> <body onload="stLoad()"> <p>下記ボタンを押して1357924680と<br>入力して下さい。</p> <div id="anser"></div> <table> <tr> <td onClick="st(1)">1</td> <td onClick="st(2)">2</td> <td onClick="st(3)">3</td> </tr> <tr> <td onClick="st(4)">4</td> <td onClick="st(5)">5</td> <td onClick="st(6)">6</td> </tr> <tr> <td onClick="st(7)">7</td> <td onClick="st(8)">8</td> <td onClick="st(9)">9</td> </tr> <tr> <td colspan="2" onClick="st(0)">0</td> <td id="en" onClick="st('.')">.</td> </tr> </table> </body> </html>

  • ●○■□などの文字を含んだ<td>の幅指定について

    Firefoxで表示確認をしています。 <table border="1" width="100"> <tr> <td>あああああああああああ</td> </tr> </table> だと、幅100pxの位置で自動的に改行されるのですが、 <table border="1" width="100"> <tr> <td>●●●●●●●●●●●</td> </tr> </table> だと改行ず、幅がオーバーしてしまいます。●以外にも○■□などでも同じでした。 ●を使いつつ、指定した幅で改行させることはできないでしょうか?

  • 文字サイズ変更でテーブル要素(幅の値を指定済み)の幅が変化しないようにするには?

    宜しくお願いします。 [症状] TABLE・TDタグにて、幅をしているすると、 文字サイズ:小 で見るときは、設定した値の 適正地が反映されるが、文字サイズ:中 以上に 設定すると、TABLEで設定最多幅は有効なままで あるが、TDで設定した値は完全に無視される形で、 テーブルの中のバランスが乱れてしまう。 [ソース] <table width="750" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="white" style="border-collapse:collapse "> <tr> <td style="width:250px; ">あ</td> <td style="width:300px; ">い</td> <td style="width:200px;">う</td> </tr> <tr> <td>え</td> <td>お</td> <td>か</td> </tr> </table> [コメント] 特に変哲のないソースだと思います。 あ~か の文字のところには、それぞれもう少し長い 文章が入る形となります。 [質問] 文字サイズをブラウザ上で変更しても、 TDの幅が変わらないようにしたい。 その際に、文字のサイズを固定はしたくないです。 [その他] styleではなく、width指定しても 効果がありませんでした。 宜しくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう