You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django中向textarea插入UTF8文本时遇SyntaxError问题求助

解决UTF8文本插入textarea时的SyntaxError: unterminated string literal错误

嘿,这个问题我碰到过好多次了!咱们一步步来拆解问题和解决办法:

为啥会报这个错?

SyntaxError: unterminated string literal说白了就是你的JavaScript字符串“没写完”——根源是模板变量{{ initial_decription }}(哦对了,你这里拼写错了,应该是initial_description少了个s)替换成实际内容后,破坏了JS字符串的结构:

  • 如果原文本里有换行,替换后JS字符串直接被换行截断,引擎以为你没写完字符串;
  • 如果原文本里有双引号,会直接闭合你外层包裹字符串的双引号,后面的内容就成了无效代码;
  • 其他特殊字符(比如反斜杠)也可能搅乱字符串的语法结构。

举个例子,假设模板替换后代码变成这样,直接就炸了:

let initial_description = "这是一段
带换行的UTF8文本"; // 换行直接打断了字符串

靠谱的解决步骤

1. 先修正模板变量的拼写错误

把{{ initial_decription }}改成{{ initial_description }},避免因为变量名错误导致输出空内容或者意外值。

2. 服务器端转义输出内容(最关键)

用你模板引擎的JSON转义函数,把文本转成合法的JavaScript字符串:

  • 如果你用Jinja2(Python),用{{ initial_description|tojson }};
  • 如果你用Twig(PHP),用{{ initial_description|json_encode() }};
  • 其他模板引擎也都有类似的转义方法,核心是让服务器输出的内容自动转义换行、引号、特殊字符。

转义后的代码会变成这样,完全符合JS语法:

let initial_description = "{{ initial_description|tojson }}";

3. 用正确的方法设置textarea内容

textarea的内容应该用.val()方法设置,而不是.html()——.html()是用来操作元素的HTML内容,textarea的实际值存在value属性里,所以正确写法是:

let initial_description = "{{ initial_description|tojson }}";
$("#descripcion").val(initial_description);

备选:客户端手动转义(不推荐,应急用)

如果没法在服务器端处理,也可以手动转义特殊字符,但这种方法容易漏转,不如服务器端靠谱:

// 先获取原始文本,再手动转义关键字符
let rawText = "{{ initial_description }}";
let escapedText = rawText
  .replace(/\\/g, '\\\\')
  .replace(/"/g, '\\"')
  .replace(/\n/g, '\\n')
  .replace(/\r/g, '\\r');
$("#descripcion").val(escapedText);

总结

核心就是让模板输出的内容符合JavaScript字符串语法,加上用对设置textarea值的方法。按上面的步骤来,应该就能顺利把UTF8文本插入textarea啦!

内容的提问来源于stack exchange,提问作者Alejandro Veintimilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:28:34