【问题标题】:Identifying hidden characters in text识别文本中的隐藏字符
【发布时间】:2014-01-14 07:38:30
【问题描述】:

我有一个 ETL 进程,它定期从 ODBC 数据源中提取代码,对其进行操作,然后将其插入到我的 postgres 数据库中。此数据源中的一列通常包含奇数字符。

在大多数情况下,我可以适当地捕获和转换所有字符,但是我有一个存在于 ODBC 数据源中的字符,不能被带入 postgres(该字符之后的所有文本都被截断),而且我我很难确定这个角色是什么。

我什至不能直接在这篇文章中插入一个字符示例,因为它被删除了:/ 我能得到的最接近的是 textmate 中的字符的屏幕截图(我唯一可以实际看到字符的应用程序):

字符是 1 和 0 之间的菱形。当我的数据进入时,0 之后的所有内容都被截断。

有没有什么好的方法可以识别这个字符是什么,以便我想办法把它去掉?

【问题讨论】:

  • 将其保存到文本文件并生成文件的十六进制转储。如果仍然不清楚,请在此处添加。
  • “0 之后的所有内容都被截断”,你的意思是 1 之后吗?
  • @tripleee,是的,对不起,我的意思是在 1 之后。关于十六进制转储的好主意。我会试试看。
  • @triplee,十六进制转储将字符显示为十六进制空值 (00)。这让我能够继续前进。你想回答这个问题,以便我可以给你信用吗?还有,谢谢! :)
  • 不,请自行回答,谢谢。

标签: postgresql character-encoding character removing-whitespace


【解决方案1】:

根据 Tripleee 对原始问题帖子的评论:

为了识别字符,我抓取了文本的十六进制值来识别有问题的违规字符的十六进制值。

有很多方法可以做到这一点,但对我来说最快的方法是使用我称为HexFiend 的实用程序,将文本转储到其中。输入文本并突出显示字符后,它返回十六进制值“00”。

更多的调查指出十六进制空值在 C 应用程序中用作行终止符(考虑到我的项目上下文,这很有意义)。

我已将这个空值放入我的 ETL 流程中,以便用新的线将其切换出来,现在一切都变得阳光和雏菊。

再次感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多