-5

重複の可能性:
UTF-8 全体

こんにちは、最近、サーバーで Linux から freebsb に切り替えましたが、現在、データベースが機能していません。

å、ä または ö (スウェーデン文字) を含む文字列をエコーし​​ようとすると、疑問符になります。つまり、Söndag は Söndag になります。echo "ä"; 動作します。$ file --mime test.php test.php: text/plain; 文字セット=utf-8

test.php

<?php
$a="å";
mysql_connect("localhost", "root", ":-)");
mysql_select_db("lidev");

$result=mysql_query("select * from DLG where dag='Onsdag'");
$row=mysql_fetch_array($result);

echo $row['dagens'];
echo "<br>";
echo mb_detect_encoding($row['dagens']);
?>

mb_detect_encoding() は "UTF-8" を出力します 私の mysql テーブルはutf8_general_ciにあります。

私は完全に立ち往生しています!どうしたの?

乾杯!

4

1 に答える 1

2

どこでもutf-8を使用していないようですので、ある時点でデータが台無しになりました。正確に何をしているかに応じて、次の1つ以上のポイントを変更/追加する必要があります(ほとんどの場合、それはSET CHARSET/mysql_set_charset忘れたものです)。

  • MySQLにutf-8を使用するように指示します。これを行うには、これをmy.cnfに追加します。

    collation_server = utf8_unicode_ci
    character_set_server = utf8
    
  • mysqlと対話する前に、次の2つのクエリを送信します。

    SET NAMES 'utf8';
    CHARSET 'utf8';
    

    または、接続を開いた後、phpにこれを実行させます。

    mysql_set_charset('utf8', $conn); // when using the mysql_-functions
    mysqli::set_charset('utf8') // when using mysqli
    
  • データベースのデフォルトの文字セットとしてUTF-8を設定します

    CREATE DATABASE `my_db` DEFAULT CHARACTER SET 'utf8';
    
  • テーブルについても同じようにします。

    CREATE TABLE `my_table` (
      -- ...
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
  • クライアントがブラウザであると仮定して、コンテンツをutf-8および正しいヘッダーとして提供します。

    header('Content-type: text/html; charset=utf-8');
    

    ブラウザが確実に理解できるようにするには、メタタグを追加します。

    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    
  • そして、最後になりましたが、utf-8を使用してフォームを送信するようにブラウザに指示します

    <form accept-charset="utf-8" ...>
    
于 2012-06-20T13:38:36.513 に答える