我很好奇,如果我應該用ASCII或UTF-8編碼網址。我相信網址不能有非ASCII字符,但是有人告訴我他們可以使用UTF-8,並且我搜索了四周,無法找到哪一個是真的。有人知道嗎?網址可以有UTF-8字符嗎?
8
A
回答
4
這有兩個部分,但它們都是「是」。
隨着IDNA,可以使用完整的Unicode劇目(有一些小的波折,防止歧義和濫用)註冊域名。
路徑部分沒有嚴格規定,但可以在路徑中編碼任意字符串。瀏覽器可以選擇顯示一個人類可讀的渲染而不是編碼路徑。但是,這需要啓發法,因爲沒有辦法指定路徑的字符集和編碼。
因此,http://xn--msic-0ra.example/mot%C3%B6rhead是一個(虛構的例子,不完全正確)計算機可讀的編碼的URL,可以顯示給用戶http://müsic.example/motörhead。該域名被編碼爲xn--msic-0ra.example
,名稱爲Punycode,路徑中包含編碼爲UTF-8和URL編碼的標籤「motörhead」(Unicode代碼點U+00F6以UTF-8中的兩個字節0xC3 0xB6表示)。
該路徑也可以是mot%F6rhead
,這是Latin-1中的相同標籤。在這種情況下,推導出一個合理的人類可讀表示將會更加困難,但也許周圍角色的環境可以提供足夠的提示以進行良好的猜測。
單獨地,%F6
幾乎可以是任何東西,並且%C3%B6
可以是例如。 UTF-16。
-1
是的,url路徑可以包含UTF8字符。實際上,一個bot在我的網站上請求路徑/â��
。當我檢查$_SERVER['REQUEST_URI']
時,這個值只是一些二進制垃圾,/???
。事實證明,$ _SERVER ['REQUEST_URI']已經被解碼,但是當它被解碼時,它會破壞很多UTF8字符,尤其是utf8mb4。
要解決它,我這樣做:
$_SERVER['REQUEST_URI'] = rawurldecode($_SERVER['UNENCODED_URL']);
的[URL中的Unicode字符]
相關問題
- 1. C++網址解碼,utf8字符錯誤
- 2. mysql可以正確顯示utf8中的所有字符嗎?
- 3. ELF符號可以用UTF8表示嗎?
- 4. php可以檢測4字節編碼的utf8字符嗎?
- 5. 我可以自動替換我的網址中的字符嗎?
- 6. (Apache)可以在重寫規則中匹配UTF8字符嗎?
- 7. makefile是否可以包含UTF8字符?
- 8. UTF8中可以有一個Unicode連字符多個表示形式嗎?
- 9. 術語「點擊網址」和「點擊網址」可以互換嗎?
- 10. webservlet 3.0 - utf8網址格式
- 11. 可以將所有字符集編碼字符串轉換爲utf8
- 12. 有效字符在字符集UTF8
- 13. 我可以在網址中使用ö或å這樣的瑞典字符嗎?
- 14. 有人可以解釋這兩個Youtube網址的區別嗎?
- 15. 我可以用含有空格的網址替換%20嗎?
- 16. 解析字符串以獲取網址
- 17. SBJson - UTF8字符
- 18. 我可以使用v字符串作爲IPv4地址嗎?
- 19. 檢查網址字符串和301重定向到網址沒有字符串
- 20. UTF8中的哪些字符可以有大寫/小寫字母對?
- 21. 我可以在網址中使用「>」字符
- 22. 我可以在沒有地址欄的情況下獲取當前網址嗎?
- 23. 流到UTF8字符串,沒有字節[]
- 24. 網站可以將焦點傳遞給瀏覽器網址字段嗎?
- 25. 有多少有效的utf8字符?
- 26. 可以從其他網頁的網址獲取價值嗎?
- 27. 具有特殊字符的網址#
- 28. 我可以在不提交網址的情況下獲取網址內容嗎?
- 29. mod_rewrite漂亮的網址,可能仍然有查詢字符串
- 30. QLPreviewController和UTF8字符
可能重複(http://stackoverflow.com/questions/2742852/unicode-characters-in-urls) – Rafa