當用戶輸入像??????????????????這樣的特殊 Unicode 字符串時,我遇到了問題,我的系統無法將其與用 ASCII 編寫的字符串“tuyendung”區分開來。問題是如何在將輸入字符串存儲到數據庫之前將其規范化為 ASCII?示例輸入:??????????????????(字符代碼:0xd835、0xde01、0xd835、0xde02、0xd835、0xde06、0xd835、0xddf2、0xd835、0xddfb、0xd835、0xddf1、0xd835、0xde02、0xd835、 0xddfb、0xd835、0xddf4)預期輸出:圖延東(字符代碼:0x74、0x75、0x79、0x65、0x6e、0x64、0x75、0x6e、0x67)
2 回答

慕工程0101907
TA貢獻1887條經驗 獲得超5個贊
看起來這個//TRANSLIT選項可以解決這個問題。
<?php
$input = '??????????????????';
echo iconv('UTF-8', 'US-ASCII//TRANSLIT', $input);
這將(我認為是什么?)像??這樣的數學符號變成了t

一只名叫tom的貓
TA貢獻1906條經驗 獲得超3個贊
我不知道“tuyendung”是什么。
但在 php 中,您可以使用“iconv”函數轉換字符集,或者您可以將原始形式保留在數據庫的 blob 字段中。您可以在篩選中進行任何轉換。
也許它給出了一個想法。
- 2 回答
- 0 關注
- 235 瀏覽
添加回答
舉報
0/150
提交
取消