While PxPlus does support UTF8 there are a significant number of things you need to consider and potentially change. Here are a few of the major issues.
Field Separator:
One of the largest issues you will face is that the default field separator used by PxPlus is hex 8A. This dates back to the original Business Basic from MAI and has been maintained over the years to avoid clients having to rebuild their existing files and to avoid existing logic that looks for $8A$ having to change.
The first thing you should do if you are going to use UTF-8 is to change the default field separator to a character in the range of $00$ thru $1F$. Ideally avoid tab ($09$), LF ($0a$) CR ($0D$) and ESCAPE ($1b$) as these could cause long term problems when accessing text.
Data Files:
You will also need to convert ALL existing data file which may have text requiring UTF-8. Basically, this is any file which might contain accented characters. Files that use standard ASCII ($00$ thru $7F$) wont need migration however their field separators will need to be reloaded.
Different length data:
When using UTF-8 data length can vary. For example, in normal extended ASCII 6 characters takes 6 bytes. Consider the word “garçon”, this would require 6 bytes in normal ASCII but seven in UTF8. So, if you used this as a key to a file you would need to make sure you allocated 7 bytes for it, and if there were multiple accented characters the key size would need to be longer.
Also, in your code if you try to replace portions of string you need to consider that length of a string to display may not be the same as the length of a string in memory. This can cause problems with existing code.
Substrings also pose a challenge. For example, if you decided that the first 4 bytes of a name was to be used as some form of code. If the name had a UTF code sequence that started at byte 4 and continued thru byte 5+, taking a substring would likely result in an invalid UTF8 sequence.
I short, it is doable and all the tools you need are in PxPlus but migrating an application that wasn’t originally designed to handle multi-byte character is a challenge and involves more than just a character set change and system option setting.