c ++ - 转义特殊字符

时间:2010-09-14 13:57:04

标签: c++ string escaping

我需要转义所有特殊字符并替换国家字符并获取表格名称的“纯文本”。

string getTableName(string name)

我的字符串可能是“šárka65_%&。”,我希望得到我可以在我的数据库中用作表名的字符串。

1 个答案:

答案 0 :(得分:2)

哪个DBMS?

  • 在标准SQL中,用双引号括起来的名称是一个分隔符,可能包含任何字符。
  • 在MS SQL Server中,方括号中的名称是分隔标识符。
  • 在MySQL中,后面标记中包含的名称是一个已定义的标识符。

您只需选择将名称括在适当的标记中即可。

我有一种不是你想要的感觉......

你的字符串是什么代码集?它到达我的浏览器时似乎是UTF-8。您是否需要能够明确地反转映射?那更难。

您可以使用许多方案来映射信息:

  • 一个简单的想法就是对所有内容进行十六进制编码,使用标记(X)来防止前导数字:

    XC5A1C3A1726B6136355F25262E
    
  • 一个稍微不那么简单的意思是十六进制编码任何不是ASCII字母数字或下划线的东西。

    XC5A1C3A1rka65_25262E
    
  • 或者,正如评论建议的那样,您可以为重音拉丁字母设计一个映射表 - 实际上,适当初始化的映射表将是最快的方法。输入是源字符串中的字符;输出是所需的映射字符。如果使用8位字符集,则完全可以管理。如果你使用完整的Unicode,那么它的可管理性要差得多(尤其是,你如何将所有的汉语音节都映射到ASCII?)。

  • 或......