We have an app where users can sign up for participation in competitions which sends their data to ConstantContact. Sometimes users use unicode special chars in their names (e.g. http://imgur.com/owr5qkH), and recently we started receiving HTTP 409 Conflict while trying to set names with those characters to existing users.
Here's request/response examples - https://imgur.com/a/m0TQJ
Any ideas why is it happening? Any help would be appreciated.
Thank you for reaching out to Constant Contact's API Support.
The reason for the conflict error is because you are comparing our data which does not include the special unicode characters to the data supplied which does include the special unicode characters. Our system is not able to include those characters when updating the field and the update is failing due to this. You're best option is to take the data fields and run them through a process to strip out any special characters before submitting them to the API endpoints, or you could code your sign-up app to not allow those special characters. That kind of takes the fun out of allowing your contacts to sign up, but that is probably the easier of the two methods to implement.
Thanks for the answer.
I've got the idea that you don't support unicode special chars in names, so I have to remove them before sending contact's details to your API.
But could you provide me some rules which will help me to filter unsupported characters? I mean that I need some information on which characters are supported and which aren't.
Generally any symbol found in an 8-bit encoded language should be fine. Any character from a 16-bit encoded language or also called unicode will have to be removed. There are random exceptions throughout the various languages, but it is easier to just filter all of them.
The fact is that we have to support those "random exceptions throughout the various languages" because we have users from different countries and they should be able to provide their names in different languages. So we can't just stick to US-ASCII characters. Moreover, I have tried some names with unusual characters from this article https://www.w3.org/International/questions/qa-personal-names and all of them are passed your checks. Could you provide me exact information about ranges of unicode characters which are denied by your app?
Constant Contact only supports the ISO-8859-1 character encoding set. We don't have a comprehensive list of characters outside of this set that work with our system. Any characters used outside of that set would not be supported, and may be converted or changed upon import if requests containing them are even accepted. You can find a complete list of supported characters here: https://en.wikipedia.org/wiki/ISO/IEC_8859-1
Please let me know if you have any other questions!
API Support Specialist
I see your idea, but if Constant Contact only supports the ISO-8859-1, how would you explain the fact that I'm able to create contact with name "毛泽东" and it works well (I'm also able to get it then and name isn't currupted). Chinese characters aren't included in ISO-8859-1.
We do not have a comprehensive list of characters that work outside of that character set. Maintaining such a list would be tantamount to supporting such characters, as we would need to research and keep such a list up-to-date. We can only troubleshoot issues with characters that are supported, and the only list we can provide of characters that work is the ISO-8859-1 character set.
As Jimmy mentioned above, there may be some characters outside of our supported set that can be used without error (as you found), but their use is not supported, they may stop working, or cause other issues (as you also found). You can try to submit characters outside of the ISO-8859-1 character set however only characters of that set are supported by us.
API Support Specialist