尝试保存到 TEXT 字段时,当内部出现奇怪的字符时,文本被截断

Text got cut off when strange chars inside when trying to save into TEXT field

文件中有这样的文本。我想将该文本插入我的数据库(顺便说一句,UTF8 编码)。

OK:     "Spanning op P4V2 (TP2)" : 4.00 V DC <= 4.20 V DC
OK:     "Spanning op P1V8_EHSX_BGS2 (TP1030)" : 1.81 V DC >= 1.71 V DC
OK:     "Spanning op P1V8_EHSX_BGS2 (TP1030)" : 1.81 V DC <= 1.89 V DC
LOG:    Waiting for barebox command prompt
LOG:    ^@^@Starting Bootlets...
LOG:
LOG:    Configured for DCDC_BATT only power source.
LOG:    Initialized 1 ram bank(s)
LOG:    Starting secondary bootloader

table 有一个类型为 "TEXT" 的字段 "results"。但是,当找到“^@”字符时,文件会被截断。之后的所有内容都不会保存在我的数据库中。

我试过很多东西,比如:

results = results.encode('utf-8')
self.db.set_client_encoding('UTF8')
c.execute("INSERT INTO ats2_testrun (serial_number_id, test_system_id, date, status_ok, results, author, svn_url, svn_revision_number, service_report_id)  +
                  "VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s);",(sid, tsid, tstamp, ok, results, author, svn_url, svn_revision_number, service_report_id))

但是没用。有人告诉我将该字段转换为二进制字段,但如果有办法将其保存到 TEXT 字段中。我不关心奇怪的字符“^@”,所以它们可以被删除。

0x00 (^@) 是字符串终止符。它是唯一不能保存在以 0x00 结尾的字段(TEXT 是)中的字符。

替换字符就可以了。