非ASCII字符 java_Java如何检测字符串中的非ASCII字符?

下面的代码检测给定的字符串中是否包含非ASCII字符。我们使用包中的CharsetDecoder类java.nio将字符串解码为有效的US-ASCII字符集。package org.nhooo.example.io;

import java.nio.charset.CharsetDecoder;

import java.nio.charset.Charset;

import java.nio.charset.CharacterCodingException;

import java.nio.CharBuffer;

import java.nio.ByteBuffer;

import java.util.Arrays;

public class NonAsciiValidation {

public static void main(String[] args) {

// 此字符串包含一个非ASCII字符,将产生异常

//在这个程序中。第二个字符串只有一个有效的ASCII字符。

byte[] invalidBytes = "Copyright Â© 2017 Kode Java Org".getBytes();

byte[] validBytes = "Copyright (c) 2017 Kode Java Org".getBytes();

// 返回命名字符集的字符集对象。

CharsetDecoder decoder = Charset.forName("US-ASCII").newDecoder();

try {

CharBuffer buffer = decoder.decode(ByteBuffer.wrap(validBytes));

System.out.println(Arrays.toString(buffer.array()));

buffer = decoder.decode(ByteBuffer.wrap(invalidBytes));

System.out.println(Arrays.toString(buffer.array()));

} catch (CharacterCodingException e) {

System.err.println("The information contains a non ASCII character(s).");

e.printStackTrace();

}

}

}

以下是程序的结果:The information contains a non ASCII character(s).

[C, o, p, y, r, i, g, h, t,  , (, c, ),  , 2, 0, 1, 7,  , K, o, d, e,  , J, a, v, a,  , O, r, g]

java.nio.charset.MalformedInputException: Input length = 1

at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:281)

at java.base/java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:815)

at org.nhooo.example.io.NonAsciiValidation.main(NonAsciiValidation.java:23)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值