ホームページ  >  記事  >  バックエンド開発  >  ファイルコピーに関して、ファイル名が文字化けする問題について

ファイルコピーに関して、ファイル名が文字化けする問題について

WBOY
WBOYオリジナル
2016-06-23 13:58:131576ブラウズ

ファイルをアップロードし、/Public/Uploads/bbbbpppp.doc などのファイル パスをデータベースに保存します

データベースは utf-8 bin に編成されます

次に、このファイルをテンプレートとして使用する必要がありますので、それをコピーします別のフォルダーに移動し、名前を変更して再編集します。

英語でファイル名を付けても問題ありませんが、中国語として保存すると -------- ???????

しかし、ファイルをアップロードしようとすると、解決策の iconv メソッドは効果がなく、別の文字化けになります (アップロードされた中国語のファイル名には問題ありません)
$root=$_SERVER['DOCUMENT_ROOT'];
$file = $root.$ checklist[0][ 'description'];//$checklist[0]['description'] はデータベースのパスです。ページの読み取りには問題ありません
$newfile = $root.'documents/''.'Report .doc';
copy($ file, $newfile)






ディスカッションへの返信 (解決策)

??????? は utf-8 ラララの形式ですgbk 環境で見られる Kan 眍 (これも 1 バイトが欠落しています)

簡体字中国語 Windows オペレーティング システムのデフォルトの文字セットは gbk です
簡体字中国語 linux オペレーティング システムのデフォルトの文字セットは utf-8 です
プログラムにはファイルのコピー、処理されたファイル名のエンコーディングは、オペレーティング システムのデフォルトの文字セットに準拠する必要があります。そうでない場合は、「文字化け」します

データベースは utf-8 bin として編成されていると言いましたが、これは明らかに間違っています
utf- 8 は mysql では utf8 として表現され、bin (バイナリ) はそうではありません。自動トランスコーディングが行われます

助けを求める前に、まず関係を整理してください

データベースエンコーディング utf-8 PHP エンコーディング utf-8 次に、iconv を使用して、 phpのgbkにアップロードしたファイル名はエラーなく中国語で表示されます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。