我最近对我的 rails 应用程序上的各种输入进行了一轮测试,我发现了如何处理传入请求中的空字符的问题。我的应用程序由 Postgresql 8.4 数据库支持。事实证明,Postgresql 不支持在标准的“文本”或“varchar”字段中存储空字符。但是,当我尝试通过 rails 存储一个包含空字符的字符串时,默认行为似乎是在空字符之后截断字符串。我认为这是一个问题,因为在截断发生之前验证了字符串。可以通过插入空字符来绕过对长度之类的验证,因为 ruby 可以很好地处理它们,并且截断只发生在插入时。
我试图找出处理这些输入的最佳方法。对我来说理想的行为是在处理无效的 UTF-8 字节时抛出异常。现在,我能想到的唯一选择是显式检查每个输入字符串中的空字符。我宁愿有一个通用的方法,但我不知道从哪里开始寻找。修补 postgresql 适配器来检查这个是一种选择吗?还是有一些我一直缺少的标准方法?