因此,我们将 Latin1 列中的数据转换为 UTF8MB4。事情似乎很好,直到我们运行数据奇偶校验,然后我们意识到,我们的转换要么用“?”替换特殊字符。或者随意添加“?”有斑点。
这是我们的转换SQL:
SELECT (SELECT CONVERT(CONVERT(d.actualresults USING latin1) USING utf8mb4) FROM document d
WHERE d.origindocumentid = 2711460)
FROM documentfield df
WHERE LOWER(df.name) = 'actualresults';
这是原文(HTML 片段)
<li><span style="background-color:rgb(255, 255, 0)"><a href="https://www.land.com/perspective.req?projectId=24113&docId=2711870" target="_blank">convert/import preview needs some minor ui changes</a></span></li>
这是转换后的:
<li><span style="background-color:rgb(255, 255, 0)">?<a href="https://www.land.com/perspective.req?projectId=24113&docId=2711870" target="_blank">convert/import preview needs some minor ui changes</a></span></li>
注意“?”在第一行?为什么转换者要添加这个“?”
另一个例子是:
这是原文(HTML 片段)
<li><span style="background-color:rgb(255, 255, 0)">✓<a href="https://www.land.com/perspective.req?projectId=24113&docId=2711870" target="_blank">convert/import preview needs some minor ui changes</a></span></li>
这是转换后的:
<li><span style="background-color:rgb(255, 255, 0)">?<a href="https://www.land.com/perspective.req?projectId=24113&docId=2711870" target="_blank">convert/import preview needs some minor ui changes</a></span></li>
如何避免这种情况?
SELECT (SELECT CONVERT(CONVERT(d.actualresults USING latin1) USING utf8mb4) FROM document d
WHERE d.origindocumentid = 2711460)
FROM documentfield df
WHERE LOWER(df.name) = 'actualresults';
如果有人想知道或者有人遇到这个问题,这里就是答案。
SELECT (SELECT CONVERT(d.actualresults USING utf8mb4) FROM document d
WHERE d.origindocumentid = 2711460)
FROM documentfield df
WHERE LOWER(df.name) = 'actualresults';