Unicode Characters in Ubuntu Server – How to Handle

filesystemsrsyncubuntu serverunicode

I recently migrated from Ubuntu Desktop 13.04 to Ubuntu Server 13.10 and now my filesystem doesn't seem to support unicode characters. I use rsync to backup/sync files and it shows the proper characters, but it wants to delete the non-matching filename and create an escaped version.

For example:

root@ubuntu-server:~# rsync -avh --progress --delete --dry-run --exclude \$RECYCLE.BIN /media/source/ /media/target/

deleting Tiësto - Ten Seconds Before Sunrise.mp3
Ti\#353sto - Ten Seconds Before Sunrise.mp3

Also, if I copy a unicode file to the file system it shows up as:

drwxr-xr-x 3 root root      4096 Jan 21  2013 DJ Ti?sto/

I tried installing unicode libraries via apt-get install unicode but that didn't seem to do anything as far as resolving the issue.

Update: Now this may be a kernel issue. I'm copying over samba/cifs and I tried to specify the utf8 charset via mount -t cifs //192.xxx.xxx.xxx/source/ /media/target/ -o iocharset=utf8 but this generates an error…

mount error(79): Can not access a needed shared library
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Checking the kernel log reveals this little gem:

root@ubuntu-server:~# tail /var/log/kern.log
Nov 30 03:51:33 ubuntu-server kernel: [ 1756.518222] CIFS VFS: CIFS mount error: iocharset utf8 not found

How do I get utf8 support in the kernel?

Any ideas?

Best Answer

Ok, after the troubleshooting above, and much googling... I found this bug report where the solution is explained. Basically, if you perform an Ubuntu Server Minimal install you get exactly that, minimal drivers. I guess somebody decided utf8 wasn't important enough to include in the minimal set of drivers. Thus, if you did that installation type, you need to later install the linux-image-extra-virtual package to get utf8 support. 232 MB of additional drivers to support the utf8 character set... Efficient. :-/ Anyway this fixed the problem.

root@ubuntu-server:~# apt-get install linux-image-extra-virtual
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
    crda iw libnl-3-200 libnl-genl-3-200 linux-firmware linux-image-3.11.0-13-generic
    linux-image-extra-3.11.0-13-generic linux-image-generic wireless-regdb
The following NEW packages will be installed:
    crda iw libnl-3-200 libnl-genl-3-200 linux-firmware linux-image-3.11.0-13-generic
    linux-image-extra-3.11.0-13-generic linux-image-extra-virtual
    linux-image-generic wireless-regdb
0 upgraded, 10 newly installed, 0 to remove and 12 not upgraded.
Need to get 73.5 MB of archives.
After this operation, 232 MB of additional disk space will be used.

Testing the utf8 file copy:

root@ubuntu-server:~# cp -a /media/source/DJ* /media/target/.

Then checking:

root@ubuntu-server:~# ll
drwxr-xr-x 3 root root      4096 Jan 21  2013 DJ Tiësto/

Update (2/22/2015):

You may be able to get away with a much lighter install if you use the --no-install-recommends argument to apt-get. I have not tried it, but maybe you could if you are having this problem.

You could try:

apt-get install --no-install-recommends linux-image-extra-virtual

If it doesn't solve the problem, just reinstall, but with the recommends:

apt-get install --reinstall linux-image-extra-virtual
Related Question