如何在SQL插入语句中添加换行符,使文本在HTML中正确换行?
之前三种写法失效的原因
- 第一种用
<br />:你存储的是转义后的小于号,浏览器渲染时会把<br>识别为普通文本而非换行标签,不会触发换行。 - 第二种直接写
\r\n:SQL语法不识别反斜杠转义的换行符,会将\r\n作为普通字符存入数据库,无法生效。 - 第三种只用
char(13):一方面char(13)仅代表回车符,标准换行需要搭配char(10)(换行符);另一方面HTML默认不会把纯文本的换行符解析为页面换行,除非渲染时用<pre>标签包裹,或给容器加对应的CSS样式。
两种可行解决方案,对应不同的渲染场景
方案1:内容输出到普通HTML标签(非<pre>)时直接换行
直接存储未转义的<br>标签即可,插入语句写法如下:
INSERT INTO #Temp_Language (OnScreenTextCode, English, Mandarin) Values ('common.file-type-info', 'File type must be PDF, JPEG or PNG (max file size 20MB)<br>Please provide English translation if the document is not in English or Chinese.', N'文件类型必须是PDF、JPEG或PNG(文件大小不超过20MB)<br>文件如非英文或中文,请提供英文译本。')
注意:如果后端输出内容时默认会做HTML全局转义,需要给该字段开白名单,允许<br>标签不被转义
方案2:需要保留原始文本格式、用<pre>标签渲染的场景
存储标准的回车换行组合char(13)+char(10),插入语句写法如下:
INSERT INTO #Temp_Language (OnScreenTextCode, English, Mandarin) Values ('common.file-type-info', 'File type must be PDF, JPEG or PNG (max file size 20MB)' + char(13) + char(10) + 'Please provide English translation if the document is not in English or Chinese.', N'文件类型必须是PDF、JPEG或PNG(文件大小不超过20MB)' + char(13) + char(10) + N'文件如非英文或中文,请提供英文译本。')
如果要在普通HTML标签下也能识别文本里的换行,给包裹元素添加CSS样式white-space: pre-line;即可
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

