I created a branch at lp:~n142857/bzr-fastimport/unicode-symlinks
It has the 3 points you asked for: import and export work (I tried simple test cases for both and a complex test case for import), and the filter is neutral. As a plus, the current fast-import tests still pass.
About the 3rd point, fast-import-filter, I should mention two differences which I don't think are relevant, but just in case…:
1. git input file uses 100644 as a mode, but bzr exports 644
2. bzr produces one more blob than git in a "mv" operation. I can send a diff.
I used this script to do more complex testing with symlinks:
cd /n; rm -rf quatre enbzr; mkdir quatre; cd quatre; git init; touch més; ln -s més prova; git add més prova; git commit -a -m "link to a file with a name in utf-8"; cp -l prova prova2; git add prova2; git commit -a -m "copied symlink"; git mv prova provab; git commit -a -m "moved symlink"; rm provab; touch més2; ln -s més2 provab; git commit -a -m "modified symlink destination"; git rm provab; git commit -a -m "deleted symlink"; git fast-export --all >expo; mkdir enbzr; cd enbzr; bzr init; bzr fast-import ../expo
But of course we need better tests.