我的要求之一是「文本框名稱應該只接受UTF-8字符集」。我想通過輸入非UTF-8字符集來執行負面測試。我怎樣才能做到這一點?如何生成非UTF-8字符集
11
A
回答
8
如果你問如何構建一個非UTF-8字符,這應該是很容易從this definition from Wikipedia:
對於代碼點U + 0000到U + 007F,每個代碼點是一個字節長,看起來像這樣:
0xxxxxxx // a
對於代碼點U + 0080到U + 07FF,每個碼點是兩個字節長,看起來像這樣:
110xxxxx 10xxxxxx // b
依此類推。
因此,要構造一個字節長的非法UTF-8字符,最高位必須爲1(與模式a不同),而第二個最高位必須爲0(與模式b不同) :
10xxxxxx
或
111xxxxx
哪個也不同於兩個圖案。
使用相同的邏輯,您可以構造長度超過兩個字節的非法代碼單元序列。
你沒有標記語言,但我不得不測試它,所以我使用的Java:
for (int i=0;i<255;i++) {
System.out.println(
i + " " +
(byte)i + " " +
Integer.toHexString(i) + " " +
String.format("%8s", Integer.toBinaryString(i)).replace(' ', '0') + " " +
new String(new byte[]{(byte)i},"UTF-8")
);
}
0到31的非打印字符,那麼32是空間,其次是可打印字符:
...
31 31 1f 00011111
32 32 20 00100000
33 33 21 00100001 !
...
126 126 7e 01111110 ~
127 127 7f 01111111
128 -128 80 10000000 �
delete
是0x7f
和之後,從128包含地最多254被印刷沒有有效的字符。可以從UTF-8 chartable也參見:
碼點U+007F
表示與一個字節0x7F
(比特01111111
),而碼點U+0080
與兩個字節0xC2 0x80
(比特11000010 10000000
)表示。
如果你不熟悉UTF-8我強烈建議您閱讀這篇精彩文章:
相關問題
- 1. 類型「字符集」沒有成員「utf8」
- 2. 寫非UTF8字符在Perl
- 3. 替換非UTF8字符
- 4. 取代非utf8字符
- 5. 如何從utf8字符串中獲取等效的非utf8字符?
- 6. XML UTF8字符集邊界
- 7. utf8與Thymeleaf的字符集
- 8. 有效字符在字符集UTF8
- 9. 字符集,UTF8和字符實體
- 10. 爲mysql中的非utf8列建議的字符集
- 11. 檢查Javascript中的非UTF8字符
- 12. 如何創建一個非UTF8字符串?
- 13. jQuery用戶界面 - 自動完成 - UTF8字符集
- 14. PHP MySQL的字符集UTF8問題
- 15. XMLHTTP URL UTF8字符集問題
- 16. 字符集UTF8給語法錯誤
- 17. mysql utf8字符集不工作
- 18. json_encode(mysql數據庫|表字符集UTF8)
- 19. C++編譯器如何從utf8源文件生成unicode字符串
- 20. 如何使用LINQ生成字符串的非獨特聯合?
- 21. 如何使用alembic將MySQL錶轉換爲utf8字符集?
- 22. 如何在Oracle中配置UTF8字符集?
- 23. 如何在magento核心資源中設置utf8字符集?
- 24. 如何將未知字符集轉換爲utf8?
- 25. 如何在Visual Basic Express 2013中將字符集更改爲UTF8?
- 26. 替換utf8中的所有非單詞字符字符串
- 27. SBJson - UTF8字符
- 28. 如何在zend中驗證來自utf8字符集的特殊字符php
- 29. resteasy,jaxb - 如何生成一個集合/字符串列表?
- 30. 如何生成特定字符集的char arrray?
通過一個用戶界面,你將有一個很難做到這一點。你需要以某種方式編程。 – leppie
首先定義您的*編程語言*,環境和/或上下文。這取決於你正在使用的系統/在/使用中會有很大的不同。 – deceze
爲什麼DOWNVOTE這個問題? – swapneel