If you "sanitize" Unicode you're just removing that functionality. Remove that character, and the right to left reversal wont' be there, right?
If you have to break it in the name of security and sanity, it shouldn't exist in the first place.
I am continually baffled about why the HN comment sections are such a hotbed of anti-unicode sentiment. Perhaps most of y'all don't have to write software that deals with non-English text in any significant way.
If you just didn't have buffers you wouldn't have to avoid buffer overflow attacks! Come on.
Yes, this aspect of SQL is poorly conceived because the only way is to manipulate it with text processing.
Parameters should be inserted into a query language using AST manipulation, like a Lisp backquote.
Now within a particular program, we can wrap something like that around SQL generation, and solve the escaping problems in one place.
That approach doesn't apply to character data, which has to be literal and primitive in many situations.