[Python-Dev] C code: %s vs %U (original) (raw)

Ethan Furman ethan at stoneleaf.us
Wed Mar 26 15:07:45 CET 2014


On 03/26/2014 06:22 AM, � wrote:

[Assuming you are talking about PyUnicodeFromFormatV]

%s is a string. No. %s is a char*; C does not have a "string" type. The string behind the pointer should be UTF-8 encoded; other encodings are tolerated through the "replace" error handler.

%U is unicode? No. This is a PyObject* whose Python type is 'str' (i.e. an object for which PyUnicodeCheck succeeds) If so, then %s should only be used when it is certain the string in question has no unicode in it? No. If you have a char*, use %s; using %U would crash.

Many thanks!

-- Ethan



More information about the Python-Dev mailing list