【java】中文转拼音遇到的奇葩事件
背景
公司線上業(yè)務(wù)有報(bào)錯(cuò),截圖找不到了。總之,就是有些生僻字,用pinyin4這個(gè)工具包是找不到的,然后拋出空指針。
時(shí)間線
還有一點(diǎn)就是對(duì)于無法找到拼音的漢字,會(huì)直接返回本字體,起碼不會(huì)報(bào)錯(cuò)。于是更改了工具包,重新引入。又外掛了本項(xiàng)目路徑下的字典,添加了日志中發(fā)現(xiàn)的特別的字。
請(qǐng)記住外掛了字典,接下來戲劇開始了..
static {MultiPinyinConfig.multiPinyinPath= Objects.requireNonNull(ChineseToSpellManagerImpl.class.getClassLoader().getResource("userPinyin.txt")).getPath(); }Dropwizard框架入門 - 云+社區(qū) - 騰訊云
我們的項(xiàng)目是部署在docker容器中的,目前的流程是dropwized會(huì)打包jar,然后docker拉取鏡像,然后進(jìn)行部署啟動(dòng)。再此過程中,找不到文件是很很正常的,因?yàn)槿萜髦胁]有文件路徑。于是參考了下文章去想辦法在容器中添加目錄,掛載文件。
docker下讀取txt文件找不到路徑,必須copy到容器或者映射文件 - 代碼先鋒網(wǎng)
本地測試通過,再次提交測試環(huán)境。然后maven打包過不去了.. 剛開始是認(rèn)為自己pom文件寫的不規(guī)范,怎么也找不到原因。
本地打包,還是不行,然后按照提示找用了findbug命令。
這個(gè)findbug工具包是指在項(xiàng)目打包的時(shí)候,會(huì)檢測是潛在的風(fēng)險(xiǎn)點(diǎn)。
使用指令后,打包彈窗如下:
最后發(fā)現(xiàn): 項(xiàng)目再打包時(shí)候,會(huì)運(yùn)行static加載類文件。。因?yàn)樽址霓D(zhuǎn)換,沒有寫標(biāo)準(zhǔn)的字符。。😭😭😭
static {MultiPinyinConfig.multiPinyinPath = System.getProperty("user.dir") + "/config/userPinyin.txt";String line;BufferedReader br = new BufferedReader(new InputStreamReader(Objects.requireNonNull(ChineseToSpellManagerImpl.class.getClassLoader().getResourceAsStream("userPinyin.txt")), StandardCharsets.UTF_8));try (PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(MultiPinyinConfig.multiPinyinPath),StandardCharsets.UTF_8))) {while ((line = br.readLine()) != null) {pw.println(line);}} catch (IOException e) {log.error("ChineseToSpellManager read file error.{}.", e.getMessage(), e);} finally {try {br.close();} catch (IOException e) {log.error("ChineseToSpellManager BufferedReader error.{}.", e.getMessage(), e);}} }思考
本地石墨寫的地址:
https://shimo.im/docs/NJkbEgYPm2c75bqR/ 《中文轉(zhuǎn)換拼音》,可復(fù)制鏈接后用石墨文檔 App 或小程序打開
總結(jié)
以上是生活随笔為你收集整理的【java】中文转拼音遇到的奇葩事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子商务系统的设计与实现(十一):数据库
- 下一篇: 士兵突击观后感