C++ c++;-转义特殊字符
我需要转义所有特殊字符,替换国家字符,并为表名获取“纯文本”C++ c++;-转义特殊字符,c++,string,escaping,C++,String,Escaping,我需要转义所有特殊字符,替换国家字符,并为表名获取“纯文本” string getTableName(string name) 我的字符串可以是“šrka65%&。”,我想得到可以在数据库中用作表名的字符串。哪个DBMS string getTableName(string name) 在标准SQL中,用双引号括起来的名称是带分隔符的标识符,可以包含任何字符 在MS SQL Server中,方括号中的名称是分隔标识符 在MySQL中,包含在后面记号中的名称是删除的标识符 您可以简单地选择
string getTableName(string name)
我的字符串可以是“šrka65%&。”,我想得到可以在数据库中用作表名的字符串。哪个DBMS
string getTableName(string name)
- 在标准SQL中,用双引号括起来的名称是带分隔符的标识符,可以包含任何字符
- 在MS SQL Server中,方括号中的名称是分隔标识符
- 在MySQL中,包含在后面记号中的名称是删除的标识符
- 一个简单的方法是简单地对所有内容进行十六进制编码,使用标记(X)防止前导数字:
XC5A1C3A1726B6136355F25262E
- 一个稍微不那么简单的是十六进制编码任何不是ASCII字母数字或下划线的东西
XC5A1C3A1rka65_25262E
- 或者,正如一条评论所建议的,您可以为重音拉丁字母设计一个映射表——实际上,一个适当初始化的映射表将是最快的方法。输入是源字符串中的字符;输出是所需的一个或多个映射字符。如果使用8位字符集,这是完全可以管理的。如果您使用完整的Unicode,那么它的可管理性要低得多(尤其是,如何将所有的汉语音节映射为ASCII?)
- 或者