summaryrefslogtreecommitdiff
path: root/Documentation/i18n.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/i18n.txt')
-rw-r--r--Documentation/i18n.txt37
1 files changed, 25 insertions, 12 deletions
diff --git a/Documentation/i18n.txt b/Documentation/i18n.txt
index 625d3154ea..2dd79db5cb 100644
--- a/Documentation/i18n.txt
+++ b/Documentation/i18n.txt
@@ -1,23 +1,36 @@
-At the core level, git is character encoding agnostic.
-
- - The pathnames recorded in the index and in the tree objects
- are treated as uninterpreted sequences of non-NUL bytes.
- What readdir(2) returns are what are recorded and compared
- with the data git keeps track of, which in turn are expected
- to be what lstat(2) and creat(2) accepts. There is no such
- thing as pathname encoding translation.
+Git is to some extent character encoding agnostic.
- The contents of the blob objects are uninterpreted sequences
of bytes. There is no encoding translation at the core
level.
- - The commit log messages are uninterpreted sequences of non-NUL
- bytes.
+ - Path names are encoded in UTF-8 normalization form C. This
+ applies to tree objects, the index file, ref names, as well as
+ path names in command line arguments, environment variables
+ and config files (`.git/config` (see linkgit:git-config[1]),
+ linkgit:gitignore[5], linkgit:gitattributes[5] and
+ linkgit:gitmodules[5]).
++
+Note that Git at the core level treats path names simply as
+sequences of non-NUL bytes, there are no path name encoding
+conversions (except on Mac and Windows). Therefore, using
+non-ASCII path names will mostly work even on platforms and file
+systems that use legacy extended ASCII encodings. However,
+repositories created on such systems will not work properly on
+UTF-8-based systems (e.g. Linux, Mac, Windows) and vice versa.
+Additionally, many Git-based tools simply assume path names to
+be UTF-8 and will fail to display other encodings correctly.
+
+ - Commit log messages are typically encoded in UTF-8, but other
+ extended ASCII encodings are also supported. This includes
+ ISO-8859-x, CP125x and many others, but _not_ UTF-16/32,
+ EBCDIC and CJK multi-byte encodings (GBK, Shift-JIS, Big5,
+ EUC-x, CP9xx etc.).
Although we encourage that the commit log messages are encoded
-in UTF-8, both the core and git Porcelain are designed not to
+in UTF-8, both the core and Git Porcelain are designed not to
force UTF-8 on projects. If all participants of a particular
-project find it more convenient to use legacy encodings, git
+project find it more convenient to use legacy encodings, Git
does not forbid it. However, there are a few things to keep in
mind.