Skip to main content
 首页 » 编程设计

python之在 django 模板中处理 u'\x00'

2025年05月04日38kevingrace

我的模型中的某些字段(通过 mysql 数据库)在访问时返回 u'\x00',我想在 django 模板中检测到这一点。这是我看到的:

(Pdb) patient.address.fax 
u'\x00' 

我正在尝试在模板中执行以下操作......

{% if person.address.fax != u"\x00"  %} 
   <abbr  class="icon-print" title = "Phone"> </abbr>  {{person.address.fax}} </br>  
{% endif %} 

上面的模板代码出现以下错误:

Could not parse the remainder: '"\x00"' from 'u"\x00"' 

本质上,如果 person.address.fax = u'\x00',我不想打印传真号码。我该怎么做?

背景:

我使用 bcp 导出 MSSQL 数据库并将数据导入 MySQL。当我在 emacs 中查看从 MSSQL 导出的数据时,我在其中看到了一堆“^@”(不带引号)。导入此文件后,我怀疑此 ^@ 显示为\x00(NULL 字符?)。可能有一些方法可以防止 MSSQL 以不同的方式导出它,但这会使我的事情变得复杂,我宁愿得到上述问题的答案。

请您参考如下方法:

  1. Django 的模板将 unicode 视为字符串;您不需要 u 前缀。

  2. 您在导入时使用了错误的字符集;您需要先将字符集设置为 UTF-16LE。

  3. bcp “有帮助”输出 NUL 而不是原始字段为 NULL 的 CSV 中的空字符串;要么告诉 bcp 关闭它,要么执行 UPDATE 查询,将每个字段设置为 NULL,其中它等于 '\0'。