2016-04-10 12 views
0

これは簡単な修正であるはずですが、答えがわかりません。 Iveはグーグルで試してみましたが、ここで検索すると無駄になりました。データベースから照合して照合順序を「latin1_swedish_ci」に設定すると、ウェブページ上に疑問符記号が表示されます

私は長いテキストをデータベースに保存しています。 照合順序はlatin1_swedish_ci「 と私は、データベースにそれを見たとき、それは正しく保存されている。たとえば、次のとおりです。

 string= Sally was walking one day and saw Tom. Tom said "Hi, Sally!" Sally's response was "Hi, Tom." 

は、すべて」であるか、「ブラックダイヤモンドの白いクエスチョンマークとして表示されます。

私は

 $result=mysqli_query($db,"SELECT string FROM Table WHERE 1") 
    while($row = mysqli_fetch_assoc($result)){ 
      echo $row['string']; 
    } 

にしたいとのすべての文字が表示されています。 誰でもお手伝いできますか?

+0

本当にあなたは本当の引用符で、 'スマート引用符'(中括弧)ではないのですか? –

+0

あなたの試したecho htmlentities($ row ['string'])があります。 – jeff

+0

@dagon私は知らない...私は私のデータベースにそれらを入力したことを知っている、私は違いを伝える方法を知らない。 –

答えて

0

さらに調査をしたところ、私は前に出てこなかった投稿を見つけました。同様の問題に このソリューションは、エミールHによって提供された:

MySQLは、接続文字セットと呼ばれる 何かにその場で文字セット変換を実行します。あなたは

セット名のUTF8 SQL文を使用して、この文字セットを指定するか、そのような mysql_set_charset()などの特定のAPI関数を使用することができます。

mysql_set_charset( "UTF8"、$ CONN)。これが正しく行われた場合は、 はutf8_encode()やutf8_decode()などの関数を使用する必要はありません。

また、ブラウザで同じエンコードが使用されていることを確認する必要があります。 これは通常、単純なヘッダーを使用して行われます。

header( 'Content-type:text/html; charset = utf-8'); ( の文字セットは、ブラウザではutf-8と呼ばれますが、MySQLではutf8と呼ばれます。)

ほとんどの場合、接続文字セットとWeb文字セットは、追跡する必要がある唯一の なので、まだ動作しない場合は、おそらく他の何かが間違っている可能性があります。 を少し試してみてください。通常は完全に理解するまでに時間がかかります。 12時17時3月25日'09で編集

shareeditは、私は彼女/彼はPHPコードを見上げ、ことを読んだ後、1​​1時52

エミールHの28k75778

で3月25日'09に答え話をして、異なる構文を持つ、等号があることを発見しました。

(PHP 5> = 5.0.5、PHP 7) mysqliの:: set_charset - mysqli_set_charset - クライアントのデフォルト文字が

説明

¶オブジェクト指向型

ブールmysqliのを設定する設定します。 :: set_charset(string $ charset) 手続き型スタイル

bool mysqli_set_charset(mysqli $ link、string $ charset) デフォルト文字を設定します。データベースサーバとの間でデータをやりとりするときに使用されます。

私はこれが私の問題を抱えている人に役立つことを願っています。

0

あなたはこの例であなたを修正することができます。

SQL:

 
    CREATE TABLE `test` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `string` longtext, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; 

INSERT INTO `test` VALUES ('1', 'Sally was walking one day and saw Tom. Tom said \"Hi, Sally!\" Sally\'s response was \"Hi, Tom.\"'); 

PHP:

$query = "SELECT id, string FROM test WHERE id = 1"; 

if ($result = mysqli_query($link, $query)) { 

    while ($row = mysqli_fetch_assoc($result)) { 
     echo $row['string']; 
    } 

    mysqli_free_result($result); 
} 

mysqli_close($link); 
+0

それはうまくいくかもしれません...もしトムとサリーの物語が私がそれを扱っていたのであれば、それは十分に良いでしょう。残念ながら、既に持っているすべてのエントリに編集のトーンがあります。(300エントリ(これまでのもの)のうちのいくつかは、4ページのタイプ付きテキストです)私はよりエレガントな答えを期待していました。より良い答えがないなら、私は将来のエントリーのために何かを学んだでしょう。しかし、応答に感謝します。 –

+0

あなたは試しましたか?html_entity_decode($ row ['string']); – Gooziie

+0

いいえ私はそれにショットを与えることはありません –

0

単一の疑問符は、症状の一種です。疑問符の文字列は別のものです。疑問符のついた黒い菱形はもう一つの問題です。

    クリーンスレートをスイープ...すべてのエンコーディング機能を取り除くと...
  • は、クライアントのデータはUTF8でエンコードされており、
  • 接続がCHARACTER SET utf8であることを確立し、そして
  • 持っていますテーブル/列がCHARACTER SET utf8
  • の場合は、<meta charset=UTF-8>を使用してください。
+0

私はUTF-8に私のSQLを変換する方法を探します...私はその昨日についての質問を見た。 –

+0

そして前日、先週12、そして... –

関連する問題