我需要将文件列表转换为字符串并将其保存到db 文件列表如:
[
# [name, length]
# name is in bytes
['111.txt', '1024'],
['english.txt', '2048'],
['some CJK words.log', '2048'],
....
]
注意:
现在,我使用:
if fs:
files = []
file_names = fs[0]
file_lengths = fs[1]
for i in xrange(len(file_names)):
files.append(file_names[i] + '\#' + file_lengths[i])
files = '\n'.join(files)
save_to_mysql(files)
因为我认为以字节为单位的文件名不会有\n
和\#
,但我不太确定。使用\#
和{{1}是否安全在我的情况下?
答案 0 :(得分:1)
对此的正确解决方法是使用不能出现在文本中的字符。
但如果这是不可能的,并且该字符确实出现在文本中,则必须以某种方式标记,即转义。
已经有了解决方案:您可以使用C字符串语法或XML或JSON或YAML ...
但是如果你觉得特别懒,我有时会使用U + 0080字符,因为它没有在任何地方使用过。但请注意,如果将来你想要将字符串列表编码为列表中的元素......那么你就会遇到问题!此外,你必须检查输入字符串,以防一些恶意用户将这个字符U + 0080注入你的字符串并开始破坏。