Saya mendapatkan file dengan nama Faroese dan mencoba menyimpannya dalam skrip PHP:
2010_08_Útflutningur.xls
Di Ubuntu 10,04 LTS menyimpannya sebagai:
2010_08_�tflutningur.xls (invalid encoding)
Saya sudah menginstal dan menjalankan utf8-migration-tool
, tetapi tanpa efek.
Apakah ini kesalahan Ubuntu yang bisa saya perbaiki atau saya harus menyerah dan memodifikasi nama di php?
Apakah ada dokumen yang menyatakan charset apa yang dapat diterima untuk nama file di Ubuntu, atau apa saja spesifikasi pengkodeannya?
Terima kasih
Jawaban:
Ini terlihat seperti masalah penyandian. Sayangnya, PHP membutuhkan sedikit pegangan ketika datang ke pengkodean, karena string-nya adalah byte tunggal secara default. Jika Anda membuat nama file dalam PHP,
utf8_encode()
seharusnya membantu; Perhatikan, bagaimanapun, itu mengasumsikan pengkodean ISO-8859-1 untuk input.Di sisi lain, jika Anda menggunakan nama file yang dikirimkan oleh klien, mungkin Anda dapat meminta klien melakukan pengkodean untuk Anda. Itu dilakukan dengan
accept-charset
atribut<form>
tag, dan / atau dengan mengatur charset halaman tempat formulir aktif. Klien tertentu dapat menggunakan satu atau yang lain, jadi untuk hasil terbaik gunakan UTF-8 untuk masing-masing.sumber
Secara default Ubuntu menggunakan UTF-8 untuk nama file. Kebanyakan distro linux modern dan banyak sistem operasi lain melakukannya (Windows / NTFS adalah pengecualian yang paling dikenal dengan UTF-16).
Untuk memperbaiki file yang memiliki nama dalam penyandian yang salah seperti yang Anda tampilkan, Anda dapat mencoba menggunakannya
nautilus-filename-repairer
Anda dapat menggunakan
iconv
fungsi PHP untuk mengonversi string (nama file) dari satu penyandian ke penyandian lainnya. Tentu saja itu mengharuskan Anda tahu pengkodean apa yang mereka mulai.Untuk mendapatkan nama file yang disandikan dengan benar dari klien, Anda dapat mencoba teknik yang dijelaskan oleh eswald.
sumber