Thanks Ovidiu for the link
Even though that didn't fix my problem out of the box. I did some modification and kinda worked.
The problem is that unlike English in Unicode, languages encoded as Complex Script Level-2 is kinda complecated.
strlen($pos_slug) will give different value than
strlen(urlencode($post_slug))
Because of this when user enters post slug it saves the post but post slug gets cut off if URLENCODE exceeds 255. Since the Unicode encoding gets cutt of in the middle, now the URL is not understandable by the server!!!
So I did a check for strlen(urlencode($post_slug)) and so only cut words at the <space>. So its not truncating a Unicode encoding. This works perfectly if strlen($pos_slug) > 190 [190 is the maximum character length I use as a cap]
But now there is a problem is when strlen($pos_slug) < 190. But the strlen(urlencode($post_slug)) > 190 [hence exceeding 255 total sometimes]. This allows to save the post and people can link to the post. The problem comes when they update the post, the URL gets re-written and somehow the string gets truncated and hence server is not understanding the updated URL.
Here is a link to my [edited] file
slug-trimmer.txt
[of course change the extention to .php]