0
我需要轉義所有特殊字符並替換國家字符並獲取表格名稱的「純文本」。C++ - 轉義特殊字符
string getTableName(string name)
我的字符串可以爲「šárka65_%&」。我想獲取字符串我可以在我的數據庫中使用作爲表名。
我需要轉義所有特殊字符並替換國家字符並獲取表格名稱的「純文本」。C++ - 轉義特殊字符
string getTableName(string name)
我的字符串可以爲「šárka65_%&」。我想獲取字符串我可以在我的數據庫中使用作爲表名。
哪個DBMS?
您可以簡單地選擇將名稱放在適當的標記中。
我有一種感覺,這是不是你想要的...
什麼代碼集的字符串是嗎?它到達我的瀏覽器時似乎是UTF-8。你需要能夠明確地反轉映射嗎?這很難。
您可以使用許多方案來映射信息:
一個頭腦簡單的一個是簡單地爲十六進制編碼的一切,用一個標記(X),以防止領先的數字:
XC5A1C3A1726B6136355F25262E
一個稍微不簡單的思想是對任何不是ASCII字母數字或下劃線的東西進行十六進制編碼。
XC5A1C3A1rka65_25262E
,或作爲意見建議,可以制定一個映射表重音拉丁文字 - 事實上,適當地初始化的映射表,將是最快的方法。輸入是源字符串中的字符;輸出是所需的映射字符或字符。如果使用8位字符集,則完全可以管理。如果你使用完整的Unicode,那麼管理起來就不那麼簡單了(特別是,你如何將漢字音節映射到ASCII?)。
或者......
...什麼字符是特殊到你的數據庫?標準SQL?標準的任何變化或擴展?您是否正在使用現有的數據庫訪問庫,以及是否使用了哪一個? – dmckee 2010-09-14 14:00:32
哪一個是你的數據庫,你的字符串是什麼編碼,你如何定義**純文本**?你能否提供一些更多的細節。 – 2010-09-14 14:02:19
Unicode是20年前發明的,可以解決這個問題。您的操作系統是Unicode,您的dbase引擎是Unicode,dbase中的數據可能是Unicode。唯一的問題是你的程序不是。使用wstring。 – 2010-09-14 14:05:17