首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >崇高的文本/代码解析错误,没有理由,隐藏字符

崇高的文本/代码解析错误,没有理由,隐藏字符
EN

Stack Overflow用户
提问于 2014-03-06 10:03:48
回答 3查看 1.1K关注 0票数 3

我已经有这个问题很多年了,但没有今天那么频繁。这促使我一劳永逸地提出这个问题。

有时(对于几乎每一种逻辑),我的普通PHP代码都会因为解析错误而失败。有时PHP是正确的,但是通常情况下没有错误,当再次编写完全相同的代码时,它可以正常工作。复制和粘贴代码不起作用,必须再次完整地输入代码。

今天,我仔细地把每一个字符都打下来了,就像每行失败了一样,然后删除了旧的,只是为了让脚本工作。例如:

代码语言:javascript
复制
1    foreach ($_POST['data_positions'] AS $k => $v) {
2    
3    }

在第1行抛出一个解析错误。我将代码跳到第2行,并再次编写完全相同的第1行(我多次检查每个字符是否相同),然后删除第2行,它就能工作了。另一个例子是:

代码语言:javascript
复制
1    if (is_numeric($k)) {
2    
3    }

在第1行也会失败。当我重新键入它时,它会正常工作。再次复制和粘贴行不起作用。

我百分之百肯定代码是好的,所以它让我相信这是某种编码问题,代码的某些部分被认为是错误的编码(比如将格式化的文本粘贴到电子邮件中)。

我目前使用的是崇高文本(但在Notepad++和以前的Homesite编辑器中也有相同类型的错误解析错误),在OS上运行MAMP,但它也发生在我的Windows桌面机器上。

有人知道我能做什么吗?写几遍代码,然后随机地让它失败,这是非常烦人的。

编辑(重新打开):我仍然无法使它正常工作。不管我是把它粘贴到记事本上,还是从零开始输入一个全新的文件。我已经检查了所有的数据库到服务器到我的编辑器,他们都使用UFT-8。几乎所有的IF-语句都会中断(有时,我必须将它们输入3或4次才能正常工作。琐碎的东西,比如if ($a === 3 || $a === 6) {}

编辑(解决!):向下滚动的解决方案,我自己回答了问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-09 08:00:58

我终于找到了答案。我必须通过反复的尝试找出我做错了什么。

因此,如果您的代码因隐藏字符而中断,如果您从UTF-8切换到ISO-8859-1时发现该字符是“”,那么如果它主要发生在OSX和多个编辑器中(对于我来说是崇高文本和Coda ),这可能是原因:

在许多操作系统中,当您按alt+space时,您将得到一个正常空间的非中断空间安装。许多编程解析器(例如PHP、Xcode )在解析该字符时都会失败。

要在崇高文本中修复它,您需要编辑Preferences/键绑定- User并添加行:

代码语言:javascript
复制
{ "keys": ["alt+space"], "command": "insert_snippet", "args": {"contents": " " } },

请记住,键绑定文件是一个带有对象的数组,如果有更多的条目,则需要将,保存在末尾。如果是最后一个的话就把它拿掉。

如果您需要在任何其他编辑器中修复它,只需使用谷歌"yourEditor禁用alt空间“即可。

编辑:

我还注意到了alt+shift+space的相同行为,因此我在keybinding配置中添加了另一行:

代码语言:javascript
复制
{ "keys": ["alt+shift+space"], "command": "insert_snippet", "args": {"contents": " " } },

:)

票数 3
EN

Stack Overflow用户

发布于 2014-03-06 10:08:59

您正在不知不觉地粘贴导致此解析错误的隐藏字符。它可能是您要复制的代码的源代码,在剪贴板中包含了这些隐藏字符。也许您应该使用notepad删除这些隐藏字符:

  1. 从源复制代码
  2. 粘贴在记事本上
  3. 从记事本抄送
  4. 粘贴到您选择的代码编辑器中

此外,当您使用崇高的文本时,可能会有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2014-10-09 13:49:31

我知道你已经接受了你自己的答案,但为了将来的参考,我不建议把你的代码保存在编码为UTF-8的文件中。

在编写或任何其他代码时,我只会使用普通的旧ASCII。使用任何其他编码都可能导致意外的事情发生-正如您已经发现的那样。

即使您的代码生成的输出是您希望编码为UTF-8的网页,也可以使用ASCII作为您的代码文件。代码文件的编码和这些代码文件生成的页面编码是两件不同的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22221042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档