protected static Vector<String> toBraille(String strTextPass,
			boolean clearChinese) throws NullPointerException {
		strTextPass = strTextPass.replaceAll("[\\s\\n]+", " ");// 替换连续空白符
		logger.log(Level.INFO, "处理连续空白符：" + strTextPass);
		strTextPass = strTextPass.trim();
		logger.log(Level.INFO, "处理首尾空白符：" + strTextPass);
		strTextPass = replaceBlank(strTextPass, clearChinese);// 替换掉中文后面、单词前面的空格
		logger.log(Level.INFO, "处理字母前、中文后空白符：" + strTextPass);
		// strTextPass=DBCtoSBC.Q2BChange(strTextPass);//全角字母转成半角字母
		strTextPass = FullCharConverter.full2HalfChange(strTextPass);// 全角字母转成半角字母
		logger.log(Level.INFO, "全角字母转成半角字母-->" + strTextPass);
		strTextPass = HandleEngNum.handleEngNum(strTextPass);// 处理阿拉伯数字
		logger.log(Level.INFO, "处理阿拉伯数字：" + strTextPass);
		Vector<String> ChineseWords = ChineseToLetter.getLetter(strTextPass);
		Vector<String> ChineseBrailles = new Vector<String>();
		Properties proper = new Properties();
		try {
			proper.load(ChineseToBraille.class.getClassLoader()
					.getResourceAsStream(
							"properties/CNBrailleValues.properties"));
		} catch (FileNotFoundException e) {
			logger.log(Level.WARNING, "Error: 没找到BrailleValues系统配置文件文件！");
			e.printStackTrace();
		} catch (IOException e) {
			logger.log(Level.WARNING, "IO异常");
			e.printStackTrace();
		}
		String ChineseWord;
		String ChineseBraille;
		Matcher matcher;
		Pattern pattern = Pattern.compile("[a-z]+Chinese");
		int count = 0;// 记录输入字符串的指针
		for (int i = 0; i < ChineseWords.size(); i++) {
			matcher = pattern.matcher(ChineseWords.get(i));
			ChineseWord = ChineseWords.get(i).toUpperCase();// 多音字小写转换大写
			ChineseBraille = proper.getProperty(ChineseWord.replace("CHINESE",
					""));
			// TODO 处理输入的英文单词或不规则字母串 test: 哈 ha tt ben
			if (ChineseBraille == null) {
				// 加1则英文单词或不规则字母串要与下一个中文不空格
				count += ChineseWord.length() + 1;
			}
			try {
				if (!matcher.find()) {
					// 处理输入的字母，若是拼音则显示该拼音的盲文,同时处理标点符号（先处理）
					String matchword = ChineseBraille.replaceAll("\\W+", "");// 非字母
					if (!ChineseBraille.equals(ChineseWord)
							&& ((strTextPass.charAt(count)) == matchword
									.charAt(0))) {
						int length = matchword.length();
						ChineseBraille = ChineseBraille.replace(")", ") "
								+ strTextPass.substring(count, count + length));
						count += length + 1;
					}
					// else if(!ChineseBraille.equals(ChineseWord)&&
					// ((strTextPass.charAt(count))==ChineseBraille.replaceAll("\\W+",
					// "").charAt(0))){
					//
					// }
					else// 处理普通文字，显示该文字的盲文
					{
						ChineseBraille = ChineseBraille.replace(")", ") "
								+ strTextPass.charAt(count));
						count++;
					}
				}
				matcher.reset();
				if (matcher.find()) {
					// TODO findout why can't use replaceAll here?要重置
					ChineseBraille = ChineseBraille.replace("(", "多音字："
							+ strTextPass.charAt(count - 1) + "【");// 处理多音字显示
					ChineseBraille = ChineseBraille.replace(")", "】");
				}
			} catch (NullPointerException e) {
				// 罕见字会以小写或者null形式出现，可能会与入库多音字冲突
				logger.log(Level.WARNING, "请检查该罕见文字是否入库！");
				e.printStackTrace();
			}
			ChineseBrailles.add(ChineseBraille);
		}
		return ChineseBrailles;
	}