【问题标题】:Does Android have an equivalent to string.canBeConvertedToStringEncoding(encoding)Android 是否有等价于 string.canBeConvertedToStringEncoding(encoding)
【发布时间】:2019-11-24 21:47:05
【问题描述】:

iOS 中有一个方法canBeConvertedToStringEncoding 会告诉您是否可以将给定的string 编码为提供的编码/字符集类型(即UTF-8、ISOLatin1 等...)。 Android/Java 中是否有任何等效的内置方法

iOS 也有 fastestEncodingsmallestEncoding 将返回给定字符串可用的最佳编码类型。 Android 是否有这些 的等价物?

谢谢。

【问题讨论】:

    标签: java android objective-c encoding character-encoding


    【解决方案1】:

    在android中转码文本如下:

    byte[] utf8 = new String(string, "ISO-8859-1").getBytes("UTF-8");
    

    请参考How do I convert between ISO-8859-1 and UTF-8 in Java?

    字符集可以编码:

    boolean ISO = Charset.forName("ISO-8859-1").newEncoder()
                    .canEncode(str);
    

    https://developer.android.com/reference/java/nio/charset/Charset.html#canEncode()

    【讨论】:

    • 谢谢@lazy,但我不是在寻找如何编码。相反,如果 Android 有测试 IF 的方法,则可以将字符串转换为特定的编码 (就像 iOS 一样)。否则,您必须尝试编码并捕获任何错误,然后尝试另一种编码等...
    • @Mudlabs 好的,我明白你想要什么。你可以使用“字符集”
    【解决方案2】:

    Java没有这种方法,但是你可以通过尝试编码/解码来检查字符串是否可以用特定的字符编码正确表示。

    例如,您可以使自己的string.canBeConvertedToStringEncoding 等效如下:

    import java.io.UnsupportedEncodingException;
    
    class Main {
      public static void main(String[] args) throws UnsupportedEncodingException {
        if (canBeConvertedToStringEncoding("abc", "ISO-8859-1")) {
          System.out.println("can be converted");
        } else {
          System.out.println("cannot be converted");
        }
    
        if (canBeConvertedToStringEncoding("あいう", "ISO-8859-1")) {
          System.out.println("can be converted");
        } else {
          System.out.println("cannot be converted");
        }
      }
    
      public static boolean canBeConvertedToStringEncoding(String target, String encoding) throws UnsupportedEncodingException {
        String to = new String(target.getBytes(encoding), encoding);
        return target.equals(to);
      }
    }
    

    【讨论】:

      【解决方案3】:

      试试URLEncoder.encode(string, "UTF-8");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-04
        • 2014-06-07
        • 1970-01-01
        • 2020-10-06
        • 1970-01-01
        • 1970-01-01
        • 2011-07-01
        • 2015-03-31
        相关资源
        最近更新 更多