'admin'
编码为= CHAR(97, 100, 109, 105, 110)
我想知道是否存在将字符串的每个字母转换为SQLCHAR
的模块或方法。如果没有,我该如何自己转换?如果有帮助,我可以访问显示a = 97,b = 98等的图表。
我不确定你为什么需要这个。获取包含CHAR
ASCII或Unicode或任何代码点的字段的字符串表示形式并不难。但是我敢肯定,您并不需要它,因为数据库已经知道如何将它们与SQL中传递的字符串进行比较,等等。除非您试图生成类似于您从中获得的转储,其他一些工具。但是,假设您确实需要执行此操作,请按以下步骤操作。
我认为您正在寻找的ord
功能:
给定一个表示一个Unicode字符的字符串,返回一个整数,表示该字符的Unicode代码点。例如,ord('a')返回整数97,而ord('\ u2020')返回8224。这是chr()的反函数。
之所以行之有效,是因为Python可以访问您拥有的同一张图表—实际上,可以访问一堆不同的图表,每种图表都可以使用它。事实上,该图表是相当多的编码什么的。
因此,例如:
def encode_as_char(s):
return 'CHAR({})'.format(', '.join(str(ord(c)) for c in s))
或者,如果您只想要一个数字列表,而不是由这些数字组成的字符串,则它甚至更简单:
def encode_as_char(s):
return [ord(c) for c in s]
所有这些都假设(a)您的数据库正在存储Unicode字符并且您正在使用Python 3,或者(b)您的数据库正在存储8位字符并且您正在使用Python2。否则,您需要使用encode
or或decode
step在那里。
对于到UTF-8数据库的Python 3 Unicode字符串(注意,ord
这里不需要,因为Python 3bytes
实际上是一个数字序列):
def encode_as_utf8_char(s):
return 'CHAR({})'.format(', '.join(str(c) for c in s.encode('utf-8')))
对于将Python 2 UTF-8字符串转换为Unicode数据库:
def encode_utf8_as_char(s):
return 'CHAR({})'.format(', '.join(str(ord(c)) for c in s.decode('utf-8')))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句