PHPで「テスト」->「テスト」(UTF8)に変換することができる人はいらっしゃいますか?「テスト」はMySQLでテストが文字化けたものを正常な日本語としてMySQLに入れなおさないといけません。

どうしてもPHPのみでやらないといけなくてこういったやり方はできないので難儀しています。
http://www.miacis.co.jp/?p=160

$flag = mb_detect_encoding($str, "auto");
「テスト」を調べたらUTF8とでたので

$str = mb_convert_encoding($str, "UTF-8", "UTF-8");
で変換してもやはりダメで、

前に
mb_language("Japanese");を直前に記述して
$str = mb_convert_encoding($str, "UTF-8", "auto");
にしてもダメで

同じUTF8同士なので変換?というべきかわからないのですが、var_dump();で調べたとき「テスト」ではなく「テスト」として取得できるやり方またはコードヒントを教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

PHPやMySQLには詳しくないのですが、


化け方は、UTF-8のバイト列をISO 8859-1で読んだものに間違いありません。
> 「テスト」を調べたらUTF8とでた
ということですので、考えられることは2つ。
・文字列はUTF-8で正しく入っているが、表示の段階でISO8859-1として解釈されている
・文字列は「UTF-8のバイト列をISO8859-1で読んだもの」がUTF-8に変換されて入っている
前者ならば分かりません。
後者ならUTF-8からISO8859-1に変換してからUTF-8として読んでみてください。
    • good
    • 0
この回答へのお礼

>化け方は、UTF-8のバイト列をISO 8859-1で読んだものに間違いありません。
ヒントを下さりありがとうございます。
でもPHPだけではやっぱりダメみたいです。ありがとうございます。

お礼日時:2014/05/25 14:57

Qiita - PHPでデータベースに接続するときのまとめ


http://qiita.com/mpyw/items/b00b72c5c95aac573b71

>> 文字セット指定の方法を誤っている
>>
>> 文字セット指定すらしていない場合は論外。日本人ならマルチバイト文字を想定して当然。

に該当していませんか?
    • good
    • 0
この回答へのお礼

回答ありがとうござます。

お礼日時:2014/05/25 14:39

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qlatin-1 (ISO-8859-1)への変換

教えてください。

latin-1 (ISO-8859-1)への変換になると思いますが、Amazon等にテキストデータを送信するのですが、UTF-8では文字化けします。

artículosなどのaやiの上にダッシュがある文字です。
サーバ側はlatin-1 (ISO-8859-1)で送信するように言っているのですが、そのテキストを作るやり方が不明なので、ご教授願います。

artículosをUTF-8で送信するとartículosのように文字化けします。
アスキーコードが異なるからだと思いますが、どこかのサイトやエディタで変換できますでしょうか?

さくらエディタなどは使えなかったので、出来ればWindows環境で変換できる方法をご教授頂きたいです。

よろしくお願いします。

Aベストアンサー

私が使わせてもらっている Notepad++
http://notepad-plus-plus.org/
には文字セットに ISO 8859-1 が選択肢にあります。
が、
じゃあどーやってウムラウト?付きのAを入力すんだよ・・
という点は全く不明です。
ご参考に・・もならないか。

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。

QSQLで特定の項目の重複のみを排除した全項目を取得する方法

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のような構造になっている場合に「項目名1」について重複している項目を排除し、結果として


項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 B    え    イ    江

上のようなデータを取得したいのです。
この時に、Aの重複を排除して取得するレコードは1~3行目のどれでもよいです。
また、データを取得する際には必ずそのレコードの「全項目」を取得したいのでDistinctはうまく使えませんでした。

どなたか詳しい方、方法を教えてくださると幸いです。回答お待ちしております。

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のよ...続きを読む

Aベストアンサー

比較可能で一意性のある値をもてる項目6をテーブルに追加して、

select T.* from T, (select Item1,min(Item6) as Item6 from T group by item1) W where T.item6=W.item6;

――ってやるのが、一番手っ取り早いと思います。
他のところに影響がでないのであればですが。
oracleならrowidを使うとか、レコードの更新時刻を突っ込むとか。

Qtableタグとformタグの組み合わせ

tableタグとformタグの組み合わせでどのように記述すれば、構文上正しいのでしょうか?
私は下のパターンで書いておりますが、間違いでしたら早めに改めたいので
お聞きしました。

<table>
<form>
<input type="hidden" name="a" value="1">
<tr>
<td>
<input type="text" name="b" value="">
</td>
</tr>
<tr>
<td>
<input type="submit" value="OK" value="">
</td>
</tr>
</fomr>
</table>

Aベストアンサー

恐らく、<form>タグを入れると1行分の隙間ができるのでそのように記述しているのでしょう。私も4年ほど前に何かの雑誌でそのように記述しましょう、を確かに見ました。W3Cの理論を無視すれば別に表示するのだから構わないとも思います。
しかし、私の場合、今は、前者様の回答のように<table>の外に記述します。そして、スタイルシートで
<form style="margin:0px;">
とすれば、隙間が無くなります。

Qfindでフォルダだけを検索

find / -name "apache*"
これを、フォルダだけヒットするような文にするとどうなりますか?

Aベストアンサー

がると申します。

find / -name "apache*" -type d
でいかがでしょうか?

QERROR1062:Duplicate entry.....というエラーが出てしまいました

いつもお世話になります。
データベースからSELECTで抽出したデータを別のテーブルにINSERTするSQLを実行したのですが、
ERROR1062:Duplicate entry.....というエラーが出てしまいました。
お詳しい方がいらっしゃいましたら、アドバイスをいただけませんでしょうか?よろしくお願いいたします。
【実行したSQL】
INSERT INTO tblA (dataA1, dataA2, dataA3, dataA4) SELECT "9001","AA",dataB1,dataB2 FROM tblB WHERE dataB1 = 52

tblAの主キー:dataA1とdataA2
tblBの主キー:dataB1

dataA1とdataA2はtblAの主キーとなっているため、重複してしまうということのようです。tblBの主キーはdataB1であるため、抽出されてくるデータは常に1件なので問題ないと期待していましたが、甘くなかったようです。何か良い方法はないものでしょうか?よろしくお願いいたします。

Aベストアンサー

「ERROR 1062」は、重複データを格納しようとした場合に出力されるエラーです。
既にdataA1='9001'&dataA2='AA'という行が、tblAに格納されているのですよね?

>抽出されてくるデータは常に1件なので問題ないと期待していました

「insert ~ select ~」を実行前に、既に同じデータが格納されているのでは?
あるいはprimary keyの指定が、質問中に記された通りでなく、2件以上検索されているかです。

>何か良い方法はないものでしょうか?

何をするための方法を、聞きたいのかが分かりませんが?

QgetElementByIdの戻り値がnullになります。

getElementByIdでdivタグのオブジェクトを取得したいのですが、nullとなってしまいます。
以下のコードのどこがいけないのでしょうか。
---
<div id='a'></div>

<script language="javascript">// <!--
var a_ = document.getElementById('a');
document.write(a_);
// --></script>
---

Aベストアンサー

さらに実験

<div id='a'></div>
<div></div>
<script type"text/javascript">// <!--
var a_ = document.getElementById('a');
document.write(a_);
// --></script>

これはnullですが

<div id='a'></div>
<div>あ</div>
<script type"text/javascript">// <!--
var a_ = document.getElementById('a');
document.write(a_);
// --></script>

これは[object]や[HTMLdivElement]が返りました。

Qsession_start()でwarningが表示されてしまいます。

phpファイルの冒頭で<?php session_start() ?>と
記述しているのですが、

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at ファイル名) in ファイル名

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ファイル名) in ファイル名

とwarningが出てしまいます。
warning中のheaders already sent byにヒントがあるとは感じるのですが、その意味が理解できません。

どなたかお詳しい方宜しくご教示くださいませ。

Aベストアンサー

headers already sent by
とは、ヘッダー情報がsession_start()の前に既に送られているということです。なので、PHPファイルを確認いただいて、ヘッダー情報が無いか確認してみてください。

具体的にはそのファイルを見てみないと分かりませんが、
私の経験則ではありますが、
例えば余計なスペースが入っていないかどうか、
header関数が入っていないかどうかを確認してみてください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報