I'm using wp_insert_post I loop over a text file one row at a time and for each row I create a post. The text is set as the `post_title', for text that is not utf8 the post inserts but with an empty title.

Why does that happen, if I'm able to create a post in the backend admin using non utf8 chars it looks like WordPress converts the encoding in the backend.

How can I bypass this with wp_insert_post and have it insert the post title with non utf8 chars?


  • 1
    Why do you want to insert invalid data into your database? This will break everything. And no, you cannot enter non-UTF-8 characters in the back end. – fuxia Sep 20 '13 at 16:51
  • @Toscho I just tested entering ā into a custom field from the backend and it saved. WordPress is correcting the slug which is great, and keeps the title and permalink in the backend but why not when I use wp_insert_post isn't it running the same actions as from the backend to create the posts? – Anagio Sep 20 '13 at 16:56
  • 3
    ā is a valid UTF-8 character, depending on the encoding. You have to make sure the correct encoding is used, or MySQL must reject the input. See this function for one way to do that. – fuxia Sep 20 '13 at 17:05

It could be due to the text encoding you are using is not set to UTF8, try to use iconv() and set.

iconv('ISO-8859-1','UTF-8', $post_info['post_content']);

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.