String::format() on the Qt port doesn't work with utf-8 strings because it calls QString::vsprintf(), which handles cformat as a Latin1 string by default[1] (unless changed by QTextCodec::setCodecForCStrings(), which is global and non-thread-safe). Because of that we can't, for example, reuse the current strings in the WebKit2 LocalizationStrategy[2], not to mention potential bugs somewhere else due to this unexpected limitation. See also bug 18994 for a long discussion on String::format() pitfalls and bug 37327 that lists several places where String::format() is used with utf-8 strings. 1. http://doc.trolltech.com/4.7/qtextcodec.html#setCodecForCStrings 2. WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp
I've just noticed that the plan is to eliminate String::format() completely. See bug 30342 :-)