2012-08-31 68 views
1

这真的有点奇怪,可能是我没有正确的完成,但由于某些原因,当我在MySQL中插入或更新(使用PHP类创建)时,对于插入文本的原因(在这种情况下,电子邮件的HTML副本)只有一半插入...当它看到' - '时,它一直打破MySQL插入列插入一半

我不认为这是一个标准的连字符,因为它看起来不断在浏览器栏中略有不同,甚至在这个文本区域中,我的连字符“ - ”比“ - ”更窄。我已经尝试过HTML实体,但不会转换,所以在处理这个令人讨厌的角色时有一些建议?

虽然我应该说,如果我使用PHP My Admin直接插入HTML主体(完全相同的格式,所有内容都会插入,我甚至尝试使用str_replace删除它,但我没有运气。有更多的单词,但有效的话(但它仍然切断之前,该字符显示.....

+2

任何代码?你有什么尝试? – jcho360

+0

在数据库中定义的列是否足够宽以容纳所有插入的文本? –

+0

是的,它被定义为'LONGTEXT',这是很长的 - 但正如我上面所说,如果它将数据粘贴到PHP我的管理员,一切都保存 – MrJ

回答

1

您正在使用“dash”不要与连字符混淆。看看不同之处: - -

有许多种破折号:

figure dash (‒) U+2012    
en dash  (–) U+2013 
em dash  (—) U+2014 
horizontal bar (―) U+2015 
swung dash  (⁓) U+2053 

在执行查询之前,您可以尝试使用每种类型的str_replace("–", "-", $query);,看看是否可以解决您的问题,但是您真的应该考虑执行utf8_encode(),然后将数据库字段设置为使用UTF8。

+0

这听起来像最有可能的原因(这是Outlook的破折号,而不是连字符?) - 我会看看我能做些什么 – MrJ

+0

Outlook会自动将一个双连字符( - )转换为一个em短划线,这就是它看起来像你所得到的。 http://answers.microsoft.com/en-us/office/forum/office_2010-onenote/autocorrect-and-the-em-dash/6b4b0e83-2bb1-4d1b-9346-384596fd48d7 –

+0

谢谢 - 它似乎工作!有没有其他字符可以像这样破坏插入? – MrJ