簡體   English   中英

文件名中的Umlauts被點代替

[英]Umlauts in filenames are replaced with dots

因此,用戶嘗試將某些文件名中帶有變音符號的文件上傳到我的系統中(系統以laravel作為框架運行apache2)。 該腳本的作用是將文件上傳到服務器,並在數據庫中保存一個條目(編碼為utf8_general_ci)。但是,當他嘗試下載文件時,出現“找不到文件”錯誤。 我查看了一下,文件已正確上傳到服務器上。當我下載它們並查看控制台中的文件名時,它們看起來像這樣:

看截圖

您會注意到最后一個文件顯示正確。 我試圖重命名它,然后只用相同的字母替換了變音符號,並修復了它。您知道問題出在哪里嗎?

查看您的上傳腳本使用哪種編碼類型。 可能的解決方案是在保存在磁盤和數據庫上之前重命名文件(僅允許使用az和數字),這是一種很好的做法。

聽起來像是缺少Unicode規范化的情況。

有多種編碼某些字形的方法。 例如,可以使用預先組合的單個字形U + 00E4或作為( U + 0061 )的組合序列,然后是組合透音符號(U + 0308)來表示

您的代碼應確定一個Unicode規范化(取決於您的平台,如果像屏幕截圖所示,如果您使用的是Wintendo,我想是NFKC,但它不是我非常友好的平台),並確保所有嘗試打開文件之前,文件名已標准化。

有關更多信息,請參見https://en.wikipedia.org/wiki/Unicode_equivalence

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM