我有一个编码字符串(我没有关于它的信息并且可能无法更改),它在开头有 8 个随机字符(编码之前和解码之后)。然后有效数据开始。解码字符串:String plainText = @#$%^&@#valid_data
现在当我做 aplainText.substring(8)
我得到valid_data。但有时,随机字符是多字节的,例如普%^&@#valid_data,其中普有 3 个字符。对此执行 aplainText.substring(8)
返回lid_data。普算为 1,所以这 8 个字符一直延伸到va。
我想要的是,让我的代码将普算作 3,因此仅从 String 中删除普%^&@# plainText
。
通过使字符串函数多字节不安全,我的 php 对应方轻松实现了这一点。即,使用substr()
而不是mb_substr()
.
这在Java中可能吗?或者确保不丢失有效数据的唯一方法是确保多字节字符根本不被加密?
编辑:我可能应该添加这个 - 这在我的本地 Windows 环境中可以正常工作,但在 Staging unix 环境中却不行。