Linux下查看txt文檔

當我們在使用Window操作系統的時候,可能使用最多的文本格式就是txt了,可是當我們將Window平臺下的txt文本文檔復制到Linux平臺下查看時,發現原來的中文所有變成了亂碼。

沒錯, 引起這個結果的原因就是兩個平臺下,編輯器對默認的編碼格式是不一樣的:

在Window平臺下。Notepad的默認編碼是ASCII碼或者GBK,而在Linux平臺下默認的是UTF-8(中文環境的情況),編碼的不同導致了原來文檔中的中文變成了亂碼。

解決的方法:
使用iconv命令將文檔的編碼進行轉換就可以。

iconv默認情況下,是沒有被安裝的。以下簡介下iconv的安裝過程:
1. 下載:
http://www.gnu.org/software/libiconv/#TOCdownloading

2. 安裝:
下載完畢后,切換到下載文件夾先進行解壓:

$tar -xzvf libiconv-1.14.tar.gz

然后進入解壓后的文件里

$cd libiconv-1.14_2
查看當中的README文件,我們能夠看到安裝步驟:(當然,假設您熟悉源代碼的安裝,這步全然能夠省略^-^)
$ ./configure --prefix=/usr/local
$ make
$ make install

3. 命令學習
該工具安裝完畢后,肯定要先了解下這個命令的使用方法吧。這個沒什么可說的:
$iconv --help
我們會看到以下的內容:
Usage: iconv [OPTION...] [FILE...]
Convert encoding of given files from one encoding to another.Input/Output format specification:-f, --from-code=NAME       encoding of original text-t, --to-code=NAME         encoding for outputInformation:-l, --list                 list all known coded character setsOutput control:-c                         omit invalid characters from output-o, --output=FILE          output file-s, --silent               suppress warnings--verbose              print progress information-?

, --help Give this help list --usage Give a short usage message -V, --version Print program version Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.

說的非常明確,就是依照以下的格式進行轉換:
iconv -f 原編碼 -t 目標編碼 要轉換的文件

4. 編碼轉換:
學會了編碼的轉化。我們就舉了樣例示范一下:
$iconv -f gbk -t utf8 test.txt
命令運行完畢后,你發現原來test.txt中的中文正常顯示了。可是打開原來的文件,卻發現還是亂碼,這個Easy,我們將輸出的內容輸入到文件里就可以。


$iconv -f gbk -t utf8 test.txt -o test
或者運行以下的命令:
$iconv -f gbk -t utf8 test.txt < test
此時我們打開這個test文件就會發現,原來的中文顯示正常了^-^

注意:
假設不出意外的話。上面的安裝步驟可沒有那么順利。在make的時候,會提示以下的錯誤:
n file included from progname.c:26:0:
./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");^
make[2]: *** [progname.o] Error 1
make[2]: Leaving directory `/home/freeman/Downloads/libiconv-1.14_2/srclib'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/freeman/Downloads/libiconv-1.14_2/srclib'
make: *** [all] Error 2
這個這個軟件本身存在的一個Bug,通過Google,發現一個解決該問題的補丁,內容例如以下:
--- srclib/stdio.in.h.orig      2011-08-07 16:42:06.000000000 +0300
+++ srclib/stdio.in.h   2013-01-10 15:53:03.000000000 +0200
@@ -695,7 +695,9 @@/* It is very rare that the developer ever has full control of stdin,so any use of gets warrants an unconditional warning.  Assume it isalways declared, since it is required by C89.  */
-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+#endif#endif
PS:內容中的"+"表示新增的內容。"-"表示刪除的內容!

那我們僅僅要進行例如以下操作就可以解決問題:
1. 切換到srclib文件夾下:
$cd srclib

2. 改動stdio.in.h文件:

$gedit stdio.in.h
通過搜索,定位到_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");這一行,然后在這一行的前后加上條件編譯就可以,改動后的內容例如以下:
#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif

3. 保存退出。然后再進行make, make install便可順利安裝^-^

參考資料:http://forum.z27315.com/topic/15662-%E8%A7%A3%E5%86%B3%E7%BC%96%E8%AF%91libiconv%E6%97%B6%E7%9A%84gets-undeclared-here%E9%94%99%E8%AF%AF/

轉載于:https://www.cnblogs.com/liguangsunls/p/7122605.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392182.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392182.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392182.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何擊敗騰訊_擊敗股市

如何擊敗騰訊個人項目 (Personal Proyects) Note from Towards Data Science’s editors: While we allow independent authors to publish articles in accordance with our rules and guidelines, we do not endorse each author’s contribution. You should not rely on an…

滑塊 組件_組件制作:如何使用鏈接的輸入創建滑塊

滑塊 組件by Robin Sandborg羅賓桑德伯格(Robin Sandborg) 組件制作&#xff1a;如何使用鏈接的輸入創建滑塊 (Component crafting: how to create a slider with a linked input) Here at Stacc, we’re huge fans of React and the render-props pattern. When it came time…

配置靜態IPV6 NAT-PT

一.概述&#xff1a; IPV6 NAT-PT( Network Address Translation - Port Translation)應用與ipv4和ipv6網絡互訪的情況&#xff0c;根據參考鏈接配置時出現一些問題&#xff0c;所以記錄下來。參考鏈接&#xff1a;http://www.cisco.com/en/US/tech/tk648/tk361/technologies_c…

linux 線程與進程 pid,linux下線程所屬進程號問題

這一段看《unix環境高級編程》&#xff0c;一個關于線程的小例子。#include#include#includepthread_t ntid;void printids(const char *s){pid_t pid;pthread_t tid;pidgetpid();tidpthread_self();printf("%s pid %u tid %u (0x%x)n",s,(unsigned int)pid,(unsigne…

python3虛擬環境中解決 ModuleNotFoundError: No module named '_ssl'

前提是已經安裝了openssl 問題 當我在python3虛擬環境中導入ssl模塊時報錯&#xff0c;報錯如下&#xff1a; (py3) [rootlocalhost Python-3.6.3]# python3 Python 3.6.3 (default, Nov 19 2018, 14:18:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux Type "help…

python 使用c模塊_您可能沒有使用(但應該使用)的很棒的Python模塊

python 使用c模塊by Adam Goldschmidt亞當戈德施密特(Adam Goldschmidt) 您可能沒有使用(但應該使用)的很棒的Python模塊 (Awesome Python modules you probably aren’t using (but should be)) Python is a beautiful language, and it contains many built-in modules that…

分布與并行計算—生產者消費者模型實現(Java)

在實際的軟件開發過程中&#xff0c;經常會碰到如下場景&#xff1a;某個模塊負責產生數據&#xff0c;這些數據由另一個模塊來負責處理&#xff08;此處的模塊是廣義的&#xff0c;可以是類、函數、線程、進程等&#xff09;。產生數據的模塊&#xff0c;就形象地稱為生產者&a…

通過Xshell登錄遠程服務器實時查看log日志

主要想總結以下幾點&#xff1a; 1.如何使用生成密鑰的方式來登錄Xshell連接遠端服務器 2.在遠程服務器上如何上傳和下載文件&#xff08;下載log文件到本地&#xff09; 3.如何實時查看log&#xff0c;提取錯誤信息 一. 使用生成密鑰的方式來登錄Xshell連接遠端服務器 ssh登錄…

如何將Jupyter Notebook連接到遠程Spark集群并每天運行Spark作業?

As a data scientist, you are developing notebooks that process large data that does not fit in your laptop using Spark. What would you do? This is not a trivial problem.作為數據科學家&#xff0c;您正在開發使用Spark處理筆記本電腦無法容納的大數據的筆記本電腦…

是銀彈嗎?業務基線方法論

Fred.Brooks在1987年就提出&#xff1a;沒有銀彈。沒有任何一項技術或方法可以能讓軟件工程的生產力在十年內提高十倍。 我無意挑戰這個理論&#xff0c;只想討論一個方案&#xff0c;一個可能大幅提高業務系統開發效率的方案。 方案描述 我管這個方案叫做“由基線擴展…

linux core無權限,linux – 為什么編輯core_pattern受限制?

當我試圖為故意崩潰的程序生成核心文件時,最初的核心文件生成似乎被abrt-ccpp阻礙了.所以我嘗試用vim手動編輯/ proc / sys / kernel / core_pattern&#xff1a;> sudo vim /proc/sys/kernel/core_pattern當我試圖保存文件時,vim報告了這個錯誤&#xff1a;"/proc/sys…

nsa構架_我如何使用NSA的Ghidra解決了一個簡單的CrackMe挑戰

nsa構架by Denis Nu?iu丹尼斯努尤(Denis Nu?iu) 我如何使用NSA的Ghidra解決了一個簡單的CrackMe挑戰 (How I solved a simple CrackMe challenge with the NSA’s Ghidra) Hello!你好&#xff01; I’ve been playing recently a bit with Ghidra, which is a reverse engi…

分布與并行計算—生產者消費者模型隊列(Java)

在生產者-消費者模型中&#xff0c;在原有代碼基礎上&#xff0c;把隊列獨立為1個類實現&#xff0c;通過公布接口&#xff0c;由生產者和消費者調用。 public class Consumer implements Runnable {int n;CountDownLatch countDownLatch;public Consumer(BlockingQueue<In…

python 日志內容提取

問題&#xff1a;如下&#xff0c;一個很大的日志文件&#xff0c;提取 start: 到 end: 標志中間的內容 日志文件a.log xxxxx yyyyy start: start: hahahaha end: start: hahahahha end: ccccccc kkkkkkk cdcdcdcd start: hahahaha end: code import reisfindFalse with open(&…

同一服務器部署多個tomcat時的端口號修改詳情

2019獨角獸企業重金招聘Python工程師標準>>> 同一服務器部署多個tomcat時&#xff0c;存在端口號沖突的問題&#xff0c;所以需要修改tomcat配置文件server.xml&#xff0c;以tomcat7為例。 首先了解下tomcat的幾個主要端口&#xff1a;<Connector port"808…

linux優盤驅動目錄,Linux U盤加載陣列卡驅動步驟(.dd或img).doc

Linux U盤加載陣列卡驅動步驟(.dd或img)如果沒有Linux的機器,可以使用安裝光盤的Linux環境&#xff1a;將?U?盤完全慢速格式化&#xff0c;將驅動拷貝到U盤&#xff0c;將U盤插在服務器上&#xff0c;用Linux安裝光盤第一張啟動到圖形安裝界面&#xff0c;按Ctrl&#xff0b;…

第一章-從雙向鏈表學習設計

鏈表學習鏈表是一種動態的數據結構使用節點作為鏈表的基本單位存儲在節點包括數據元素和節點指針一個完整的數據鏈表應包括轉載于:https://www.cnblogs.com/cjxltd/p/7125747.html

twitter 數據集處理_Twitter數據清理和數據科學預處理

twitter 數據集處理In the past decade, new forms of communication, such as microblogging and text messaging have emerged and become ubiquitous. While there is no limit to the range of information conveyed by tweets and texts, often these short messages are …

ios 動態化視圖_如何在iOS應用中使高度收集視圖動態化

ios 動態化視圖by Payal Gupta通過Payal Gupta 如何在iOS應用中使集合視圖的高度動態化 (How to make height of collection views dynamic in your iOS apps) 充滿活力&#xff0c;就像生活一樣… (Be dynamic, just like life…) Table views and collection views have alw…

新開通博客

新開通博客&#xff0c;希望兄弟們積極更新。 轉載于:https://www.cnblogs.com/ydhliphonedev/archive/2011/07/28/2119720.html