2016-10-09 13 views
0

私はこれでしばらく苦労しました。私はそれを働かせることができませんでした。スウェーデン語の文字の問題MySQLとLAMP

URLでhttp://course.easec.se/problem.pdf私は今まで行ったことをまとめました!

提案がありますか?

<?php 
header('Content-Type: text/html; charset=ISO-8859-1'); //no changes 
$servername = "localhost"; 
$username = "root"; 
$password = "password"; 
$dbname = "db_test4"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
mysqli_set_charset("utf8"); 
echo "From PHP Script ååååå\n"; //to see if there is problem when edit the script 
$sql = "SELECT * FROM test_tbl"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 

     echo "Kundid: " . $row["kund_id"]. " - Förnamn: " . $row["fnamn"]. " - Efternamn: " . $row["enamn"]. " - Adress:" . $row["adress1"] ."<br>"; 
    } 
} else { 
    echo "0 results"; 
} 
$conn->close(); 
?> 

クライアント:

Client

それが機能するようになりましたが、私はANSIではなくUTF-8と変更インクルードをしようとしたとき、私のエディタもないようですヘッダーに!

enter image description here

+2

これは受け入れられる質問ではありません。書式を設定し、すべての関連情報を質問に直接入力してください。そのPDFはある時点で破損する可能性があります。 –

+0

データベースからUTFを取得/出力している場合、なぜiso8859テキストがブラウザに出力されるように指示していますか? "私はあなたにバナナを送るつもりだ"とスイカを投げる。 –

答えて

0

用途: header('Content-Type: text/html; charset=ISO-8859-1');

の代わりに:ループは、印刷何も前に、ページの最上部を使用しながら、内部に使用する header('Content-type: text/html; charset=utf-8');

必要はありません。

+0

変更なし、申し訳ありません!/mats –

+0

mysqli_set_charset( "utf8");を削除してもう一度お試しになりますか?mysqli_set_charset($ conn、 'ISO-8859-1'); ' – AHJeebon

+0

と同じ結果です。 –

3

直接

$conn = new mysqli($servername, $username, $password, $dbname);

の下

$conn->set_charset("utf8");

注意を追加します。さらに、あなたも(<head>タグで)あなたのHTMLの文字セットが設定されていることを確認する必要がありますutf-8<meta charset="utf-8">

+0

ほとんどそれは 'utf8mb4'であるべきです – Martin

+0

@Martin私はそうは思わない - スウェーデン語、ドイツ語(少なくともすべての西欧のもの)のような言語の基本的な手紙は全てutf8に含まれているので、それはOPが必要とするものです – Johannes

+0

これは、OPのコンテンツがこの場合にはうまくいくことはもっと運がありますが、 'utf8'は3bitsのように励まされるべきではありません。フルキャラクタセットを提供できる場合、なぜキャラクタセットの3分の1を提供するのですか? – Martin

0

私はあなたの質問をPDFで設定するのが好きですが、ややオリジナルの:-Dです。今、問題の答えはfound hereになります。あなたはできるだけ多くの答えを読んでください。

最後に私はUTF-8の代わりにANSIにエディタを変更しました。このため

ReaseachがにPHP Multibyte Stringを使用して、PHPのコードを設定するので、問題は、あなたの内部のPHPスクリプトのエンコーディングです:実行時にPHPコードを確保するために

<?php 
mb_internal_encoding('UTF-8'); //this is the important one! 
mb_http_output('UTF-8'); 
mb_http_input('UTF-8'); 

することもUTF-8準拠のです。 IDEエディタの設定を編集して、UTF-8 BOM(Byte Order Mark)を使わずにPHPファイルを保存することもできます。これにより、この問題も解決され、他のサービスが理解できるUTF-8として保存できます。


追加の注意事項(私はMySQLのUTF-8についてのうめき声が好きCOS):

MySQLのUTF-8フルUTF-8ではありません。

  • 1))あなたは常にUTF8mb4(理想的に_unicode_ciを使用したい:ソリューションは、いくつかの一般的な添加物は、上記のリンクスレッドで提供されています。

  • 2)PDFの最後のスクリーンショットでは、これらのうちの多くを実際にutf8mb4_unicode_ciに設定する必要があります。 接続文字セットを設定する

  • 3)のみutf-8、それは他のダウン、低位置に全てをもたらし、サーバーとクライアントの両方が、接続がある場合utf8mb4使用している場合でも、極めて重要です。

  • 4)推奨:

    header('Content-Type: text/html; charset=UTF-8'); //UTF-8 
    

のみMySQLのUTF-8それの破損、他のimplementatiosはなく、として完全に使用可能であり、一般的にHTMLの標準と見なされています。

関連する問題