文件打開后發現里面的內容是亂碼,這種情況一般是有下面4種原因導致的。
下面我們就對這4種導致文件打開后亂碼的原因進行分析和提供對應的解決方法:
出現這種情況,往往是因為系統里面沒有安裝可以打開該文件的軟件,或者該文件類型的打開方式丟失被修改或者用戶采用不兼容的軟件來打開文件導致的。
我們在經常會發現用戶對電腦基本操作不熟悉,不知道應該用什么軟件來打開什么文件。有時系統里面根本沒有相對應的軟件,就自己選擇了一款其他的軟件來打開文件,結果可想而知,一定是亂碼。
有時文件的打開方式會被修改結果用了不正確的軟件來打開文件,也會出現這種情況。
我們有一次遇到一個客戶他打開一個word文檔時軟件一直提示格式不正確,我們仔細看一下,他的系統里面的word打開方式被修改成了excel,結果一直是用excel 來打開word文件,結果出現這種情況。
另外就是采用了不完全兼容的軟件來打開文件,我們還遇到一個客戶他說的文件打開一直是亂碼,后來他把文件傳個給我們,我們打開后,發現是一個加密密碼的 xsl文件,輸入正確密碼后,就正常打開了。客戶表示奇怪,我們遠程看了一下,原來這個客戶的電腦上沒有安裝excel,安裝的是wps表格。
所以,如果您的文件打開是亂碼,請先確定一下是否用的正確的軟件來打開這個文件。
現在大家的安全意識都逐步加強,開始采用加密軟件來加密電腦里面的文件。但有些用戶對加密軟件的工作原理不清楚,有的用戶會認為把加密軟件卸載了,自己加密的文件就自動解密了。所以有的用戶,再做加密軟件選擇時,先安裝一款軟件,加密了一些文件,試用一下,感覺不好用,沒有把加密的文件解密,就把這款加密軟件刪除了,結果就出現這種情況。
我們經常會遇到這樣的客戶,安裝其他加密軟件后,感覺不好用,就卸載了,然后選擇安裝我們的文件夾加密超級大師。
我們遇到的一位客戶就是這種情況,他先試用了其他的加密軟件,感覺不好用,就把這款加密軟件卸載了,卸載后,他發現加密的文件名后面多一個擴展名,并且文件圖標也變了,他就手工把這些多的擴展名刪除了,刪除后,他看到文件圖標恢復正常,就認為已經解密了。然后安裝了我們的文件夾加密超級大師,試用了幾次,感覺挺好用,但發現這些文件打開后是亂碼。和我們聯系,我們問了一下情況,然后讓用戶,添加該加密軟件擴展名,然后再安裝該加密軟件解密。
所以,如果您使用過加密軟件加密過這些文件,請先確定這些文件是否正確解密,如果使用加密軟件正確解密后,還是亂碼,就需要考慮一下這些文件是否是用這款加密軟件加密的。
提示:這里說的正確解密是指:雙擊加密文件,輸入加密密碼,軟件提示解密成功。
windows系統自帶的有一個文件保護系統EFS,這種加密方式比較特殊,是對加密用戶透明的,也就是說,您登錄系統,給文件添加EFS加密屬性,添加后,您是感覺不到加密的。但如果其他人用其他帳號登錄系統,就無法打開您用EFS加密的文件。如果您重裝系統,您的這些文件就徹底完蛋了。
我們在網上經常會看到使用EFS加密重裝系統后,文件無法打開,或者系統出現問題,導致EFS加密的文件打開是亂碼的情況。
目前這種原因導致的文件打開里面亂碼的情況還沒有好的解決方法。
文件損壞的原因有很多,人為誤操作,如用不正確軟件打開文件,并且無意中修改文件數據并且保存,或者硬盤出現問題或者電腦死機斷電都會導致正在使用的文件損壞。
如果出現這些情況,基本是沒有解決方法。
如果要預防這種情況的出現,首先要掌握基本的電腦操作知識,了解基本的文件操作方法,另外對于電腦里面重要的文件,1 要使用文件夾加密超級大師這樣的加密軟件來加密防止重要數據泄密。2 要備份防止數據丟失和損壞。因為沒有一款軟件可以保證您的文件不丟失不損壞的,只有自己進行備份。
Apache Derby 是一個開源的完全使用 Java 語言實現的嵌入式關系型數據庫。JDK歷史版本中曾經包含了 Derby 版本,叫做 Java DB,但目前 JDK 中已經不再默認包含了。
官網主頁:https://db.apache.org/derby/
在更新JDK到21/22版本后,同樣也是出現使用控制臺執行SQL腳本出現漢字亂碼。
D:\db-derby-10\bin>sysinfo
------------------ Java 信息 ------------------
Java 版本: 21.0.2
Java 供應商: Oracle Corporation
Java 主目錄: D:\JDK21
Java 類路徑: D:\db-derby-10/lib/derbyshared.jar;D:\db-derby-10/lib/derby.jar;D:\db-derby-10/lib/de
rbynet.jar;D:\db-derby-10/lib/derbyclient.jar;D:\db-derby-10/lib/derbytools.jar;D:\db-derby-10/lib/derby
optionaltools.jar
OS 名: Windows 10
OS 體系結構: amd64
OS 版本: 10.0
Java 用戶名: chenxd
Java 用戶主目錄:C:\Users\chenxd
Java 用戶目錄: D:\db-derby-10\bin
java.specification.name: Java Platform API Specification
java.specification.version: 21
java.runtime.version: 21.0.2+13-LTS-58
--------- Derby 信息 --------
[D:\db-derby-10\lib\derby.jar] 10.17.1.0 - (1913217)
[D:\db-derby-10\lib\derbytools.jar] 10.17.1.0 - (1913217)
[D:\db-derby-10\lib\derbynet.jar] 10.17.1.0 - (1913217)
[D:\db-derby-10\lib\derbyclient.jar] 10.17.1.0 - (1913217)
[D:\db-derby-10\lib\derbyshared.jar] 10.17.1.0 - (1913217)
D:\db-derby-10\bin>startNetworkServer
Tue May 14 10:47:20 CST 2024 : Apache Derby 網絡服務器 - 10.17.1.0 - (1913217) 已啟動并準備接受端口 1527
上的連接
運行ij,插入記錄,出現亂碼(JDK19及之前未曾出現這個問題):
D:\db-derby-10\bin>ij -p ij.properties
ij>connect 'chendb';
ij> drop table zipcodes;
ij> create table zipcodes(zipcode varchar(6), university varchar(20), city varchar(10));
ij> insert into zipcodes values ('100044', '北京交通大學', '北京');
ij> insert into zipcodes values ('200030', '上海交通大學', '上海');
ij> select * from zipcodes;
ZIPCO&|UNIVERSITY |CITY
--------------------------------------
100044|?????????? |????
200030|????????? |???
基于上回Java輸入輸出文件亂碼的經驗,基本確定就是控制臺字符集(GBK)和數據庫字符集(UTF-8)編碼不一致,需要修改ij運行時的字符集為GBK。由于ij運行時,實際是用java命令指定類名運行的,可以使用運行時指定 ”-Dderby.ui.codeset=GBK“ 來修改字符集為“GBK”。為了方便使用,直接使用配置文件ij.propertis,在其中加入字符集相關的屬性定義:
ij.driver=org.apache.derby.jdbc.ClientDriver
ij.protocol=jdbc:derby://localhost:1527/
#解決JDK21后,命令行漢字輸入亂碼問題
#默認命令行字符集為GBK(代碼頁936)而非UTF-8(代碼頁 65001)
#https://www.rfc-editor.org/rfc/rfc5646.html
derby.ui.locale=zh-Hans
derby.ui.codeset=GBK
重新運行ij:
D:\db-derby-10\bin>ij -p ij.properties
ij 版本 10.17
ij> connect 'chendb';
ij> insert into zipcodes values ('100044', '北京交通大學', '北京');
已插入/更新/刪除 1 行
ij> select * from zipcodes;
ZIPCO&|UNIVERSITY |CITY
--------------------------------------
100044|?????????? |????
200030|????????? |???
100044|北京交通大學 |北京
已選擇 3行
ij>
至此成功解決亂碼問題。