【问题标题】:how to compare a value's encoding of string type with a specific encoding in java?java - 如何将字符串类型的值编码与java中的特定编码进行比较?
【发布时间】:2017-01-23 07:46:44
【问题描述】:

有人告诉我编写一个获取字符串文本的代码,并检查它的编码是否等于我们想要的特定编码。我已经搜索了很多,但我似乎没有找到任何东西。我找到了一个方法(getEncoding()),但它只适用于文件,这不是我想要的。而且我被告知我应该使用 java 库而不是 mozilla 或 apache 的方法。 我真的很感激任何帮助。提前致谢。

【问题讨论】:

    标签: java string encoding


    【解决方案1】:

    您想到的是“国际化”。有类似 Loc4j 这样的库,但您也可以在 Java 中使用 java.util.Locale 来获取它。然而,一般来说,文本只是文本。它是具有一定价值的代币。没有本地化信息存储在角色中。这就是文件通常在标头中提供编码的原因。控制台或终端也可以使用某些命令/功能提供本地化。

    除非您知道源编码和使用的令牌,否则您猜测另一端使用什么编码的能力有限。如果您仍然想这样做,您将需要进入更深的领域,例如解密,通常使用统计分析来完成此类工作。这反过来又需要关于使用不同令牌的数据库,并且根据文本、数据库和算法的质量,需要特定数量的文本。特殊的东西,比如用例如写瑞典语。美国编码(例如使用a 表示åäo 表示ö)将需要更高级的分析。

    编辑 由于我得到评论说编码和国际化是不同的实体,我将添加一些 cmets。可以使用不同的编码来简单地使用英语(比如一些英语特殊字符)。也可以使用例如Charset 进行编码。然而,对于许多使用不同编码的应用程序,使用Locale 可能仍然有效,因为这个库可以对不同编码的文本进行大量操作。

    【讨论】:

    • 感谢您的回答。实际上,我是 Java 新手,我认为他们不会要求我提供如此复杂的代码(嗯,对我来说是这样)。没有别的办法了吗?
    • @maryam 如果你有某种字符串并且你想找到它的编码,那么你需要验证这个比较不同编码的统计数据。但是,由于您只想了解您拥有的文本是否使用特定编码,因此问题似乎是另一个问题。您使用的字符串几乎肯定有来源(例如控制台或文件)。查看源代码,您应该能够确定编码。如果您知道所有输入的编码,那么找出特定字符是否具有相同的编码会是一个小问题。
    • 我真的不知道他们的业务以及这会做什么,所以我不知道这个字符串来自哪里,现在我正在使用 @Test 运行它。我很困惑......我不知道该怎么办。有时我怀疑我可能没有正确回答问题,但我昨天问了他,我被告知这是真的......
    • 非常感谢您的回答。谢谢。
    • @maryam 我可以假设您遇到的问题现在已经解决了吗?否则,我假设输入来自某个流,来自文件或控制台。没有这个,您将不知道使用哪种编码。这需要统计分析。这种分析对于支持国际化的网页很常见。恐怕这是我能给你的最好答案。要么找到源代码,要么查看正在使用的编码,否则使用统计分析来找出:(。这就是人们倾向于为此使用 3rd 方库的原因。国际化是一个真正的痛苦。
    【解决方案2】:

    感谢您的回答和贡献,但这两个链接起到了作用。我已经看过这两页,但它似乎对我不起作用,因为我正在考虑直接获取编码,然后将其与特定的进行比较。 This is one of them

    This is another one.

    【讨论】:

    • 很高兴它为您服务。但是,这假设您实际上知道编码(或从例如 InputStream.getEncoding 获取它)。无论如何,请提供您如何解决问题的示例,以便更多人可以从中获得帮助。
    • 谢谢。是的,正如你所说,我有一个特定的编码,它是通过注释传递的。在我的验证器类中,我使用文本和此编码来检查此文本是否为编码。如果我的解释还不够,请随时告诉我,我会举个例子。
    • 是的,请写一个例子和一个总结。这不完全是我希望看到你做了什么。问题是答案不符合当前状态的答案。如果链接发生变化,必须始终解释链接的内容。在那种情况下,你的回答将毫无用处。
    猜你喜欢
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多