0

私の名前はダンです。以前に UTF エンコーディングの問題を見たことがあります。スタックオーバーフローでこの種の問題に関連する投稿を読み、皆さんが投稿した解決策を試しましたが、行き詰まっていると言わざるを得ません。

わかりました、私が作っているのは、値が変更されたときに AJAX (jQuery) と PHP を介して入力される一連のドロップダウンです。

  1. すべてのファイルは UTF-8 として保存されます
  2. すべてが表示される index.php ファイルには、メタタグ charset=utf-8 があります

PHP スクリプトはディレクトリを読み取り、フォルダー名に基づいてリスト オプションを出力します。

$fylke = $_GET['fylke'];
foreach (new DirectoryIterator('../pdfs/'.$fylke) as $fileInfo) {
    if($fileInfo->isDot()) continue;
$kommune = $fileInfo->getFilename();

echo "<option name='kommune' value='".$kommune."'>".$kommune."</option>";
}

Javascript は、リストボックスの変更に基づいて関数を実行します。

function getKommune() {
    $.get("get.php",
  {
    fylke: $("#fylke").val()
  },
  function(data){
    $('#kommune').html(data);
    $('#kommune').attr('disabled', false);
  $('#kommune').prepend('<option selected="selected" value="---">---</option>');
  });
}

特殊文字を含まないすべてのフォルダーとファイル名のリストは問題ありません。特殊文字 (æøå) に関しては、リストボックスはフォルダーまたはファイルで更新されません。

私はコーディングの初心者だと言わざるを得ません。助けていただければ幸いです。非稼働プロジェクトへのリンクは次のとおりです: http://www.tbds.no/pdfdl/

大きな助けをありがとう。

必要に応じてスクリプトを共有したいのですが、セキュリティを実装してください! : www.dan-levi.no/playground/pdfdown/files.zip

4

1 に答える 1

0

あなたが抱えている基本的な問題は、システムのファイル名が UTF-8 ではなく、ファイルシステムから直接データを取得し、「これは UTF-8 です」とブラウザにプッシュしていることだと思います。

次の 3 つの変更が必要だと思います。

まず、 の上部get.phpと の上部でindex.php、出力を得る前にこれを実行します。

<?php
// Set utf-8 in the header, not just as a meta tag
header('Content-Type: text/html; charset=utf-8');
?>

これを行わないと、ブラウザはget.php出力を として扱います。これはISO-8859-1、吐き出す html のスクラップに別の方法で伝えるタグがget.phpないためです。meta

次に、から引用したビットでget.php、受信fylkeパラメータをutf8_decode渡し、ブラウザに戻るものをすべて渡す必要がありutf8_encodeます。

$fylke = utf8_decode($_GET['fylke']);
foreach (new DirectoryIterator('../pdfs/'.basename($fylke)) as $fileInfo) {
    if($fileInfo->isDot()) continue;
    $kommune = utf8_encode($fileInfo->getFilename());
    echo "<option name='kommune' value='".$kommune."'>".$kommune."</option>";
}

3 番目に、ブラウザに送信する前にファイル名にindex.php適用します。utf8_encode

于 2013-02-24T18:45:38.927 に答える