2016-04-08 2 views
5

एक रेपो बनाया गया, इस सामग्री के साथ जोड़ा UTF8 और Latin2 इनकोडिंग फ़ाइलें:गिट: डिफ यूटीएफ -8 के अलावा चरित्र एन्कोडिंग को संभाल नहीं करता है?

árvíztűrő tükörfúrógép 
ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP 

https://github.com/bimlas/git-test/commit/872370caf91f1faaf931c1228c797f3d10d6435d

पर देखें git log -p 82904e60 के उत्पादन में है:

commit 82904e60d1940c036c8190e2a41de6b423727a7c 
Author: BimbaLaszlo <[email protected]> 
Date: Mon Jul 27 14:38:35 2015 +0200 

    initial commit 

diff --git a/fileencoding/latin2.txt b/fileencoding/latin2.txt 
new file mode 100644 
index 0000000..7165bc9 
--- /dev/null 
+++ b/fileencoding/latin2.txt 
@@ -0,0 +1,2 @@ 
+<E1>rv<ED>zt<FB>r<F5> t<FC>k<F6>rf<FA>r<F3>g<E9>p^M 
+<C1>RV<CD>ZT<DB>R<D5> T<DC>K<D6>RF<DA>R<D3>G<C9>P^M 
diff --git a/fileencoding/utf8.txt b/fileencoding/utf8.txt 
new file mode 100644 
index 0000000..80e1878 
--- /dev/null 
+++ b/fileencoding/utf8.txt 
@@ -0,0 +1,2 @@ 
+árvíztűrő tükörfúrógép^M 
+ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP^M 

मैं एक ही उत्पादन git गए लिनक्स और विंडोज पर (जहां मेरा लोकेल लैटिन 2 है)। पेजर (git --no-pager log -p 82904e60) के बिना की कोशिश की, मिला मुक्ति कोड के बिना एक ही परिणाम:

commit 82904e6 
Author: BimbaLaszlo <[email protected]> 
Date: 2015-07-27 14:38:35 +0200 

    initial commit 

diff --git a/fileencoding/latin2.txt b/fileencoding/latin2.txt 
new file mode 100644 
index 0000000..7165bc9 
--- /dev/null 
+++ b/fileencoding/latin2.txt 
@@ -0,0 +1,2 @@ 
+�rv�zt�r� t�k�rf�r�g�p 
+�RV�ZT�R� T�K�RF�R�G�P 
diff --git a/fileencoding/utf8.txt b/fileencoding/utf8.txt 
new file mode 100644 
index 0000000..80e1878 
--- /dev/null 
+++ b/fileencoding/utf8.txt 
@@ -0,0 +1,2 @@ 
+árvíztűrő tükörfúrógép 
+ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP 

latin2.txt का लॉग एक ही है, इसलिए समस्या एक उत्पादन में अलग एन्कोड फ़ाइलों के मिश्रण के कारण नहीं है ।

वर्णों को मुद्रित करने के लिए गिट सेट अप कैसे कर सकता है क्योंकि उन्हें पेजर के बिना भी दिखाना चाहिए?

संपादित

मुझे लगता है कि समस्या विंडोज PowerShell पर टर्मिनल से संबंधित नहीं है, उदाहरण के लिए latin2.txt ठीक है, लेकिन utf8.txt अजीब है:

Same encoding with different output

+0

यह एक करने के लिए Git की आवश्यकता होगी) एन्कोडिंग पहचान (जो कहीं के बारे में जो फ़ाइल इनकोडिंग कैसे है, जो मुझे यकीन है कि आप कहीं भी नहीं जोड़ा था, कर रहा हूँ मेटा डेटा बिना असंभव है) और ख) अपने प्रदर्शन एन्कोडिंग एन्कोडिंग कनवर्ट करते हैं, जो एक कार्य है मुझे यकीन नहीं है कि गिट में शामिल होना चाहिए। – deceze

उत्तर

2

गिट वास्तव में चरित्र एन्कोडिंग के बारे में परवाह नहीं करता है। एक फ़ाइल बाइट्स का एक गुच्छा है।

प्रदर्शित करना आपके टर्मिनल द्वारा किया जाता है। यदि यह यूटीएफ -8 के रूप में डीकोड करने के लिए कॉन्फ़िगर किया गया है तो आपकी लैटिन-2 फ़ाइल टूटी हुई है। यदि यह लैटिन -2 के रूप में डीकोड करने के लिए कॉन्फ़िगर किया गया है तो आप यूटीएफ -8 फ़ाइल टूटी हुई लगती है।

शायद encoding विशेषता (git help gitattributes देखें) कुछ औजारों को एक संकेत देने में सक्षम है कि फ़ाइल को सही ढंग से कैसे डीकोड किया जाए, लेकिन मैंने इसका कभी भी उपयोग नहीं किया। उदाहरण के लिए जिथब इस विशेषता को देखने और उन फ़ाइलों को अलग-अलग डीकोड करने के लिए पर्याप्त स्मार्ट हो सकता है।

+0

मुझे लगता है कि यह टर्मिनल से संबंधित नहीं है: प्रश्न का अंत देखें। मेरी राय में 'gitattributes' थोड़ा हैकी है: प्रत्येक फ़ाइल को मैन्युअल रूप से सेट करना मुद्दों का हॉटबैक है। – bimlas

+0

@ बिम्बा यह * आपका टर्मिनल है! जैसा कि माइकस कहते हैं: यदि आपका टर्मिनल लैटिन 2 की अपेक्षा कर रहा है, तो यूटीएफ -8 डेटा टूटा हुआ है और इसके विपरीत। विभिन्न टर्मिनल आपको अलग-अलग परिणाम देते हैं, यहां कोई बड़ा आश्चर्य नहीं है। गिट केवल कच्चे बाइनरी डेटा, अवधि का उत्पादन करता है। यह एन्कोडिंग के साथ कुछ भी नहीं करता है। – deceze

+0

@deceze: छवि देखें - एक ही टर्मिनल पर एक ही फाइल अलग आउटपुट के साथ? – bimlas

संबंधित मुद्दे