Rushabh, really sorry I have to re-create the patch and thanks a lot for looking at it!
Looking at the patch once again, I see that there were at least two problems. Firstly, I used the equivalent_locale function also on the encoding values. Even if that should not cause bugs (as it should result in strncasecmp anyway), it was not pretty..
The second problem was assuming that the locale specifier "A" is not longer then locale specifier B. Comparisons like 'en_US.utf8' with 'en_US_.utf8' would result in success. Bug resulting from this mistake is not real probably but it is not nice anyway..
Rather cleaning the patch once more, attached, Pavel