When your program manipulates SBCS/DBCS mixed strings, it is not easy to recognize DBCS characters as described in How To Use Both DBCS and SBCS in a String. In order to avoid this, you may take the following way (which we call normalization). All characters including SBCS are represented in two-byte units. For example, all SBCS characters are prefixed with NULL to distinguish them from real double-byte characters. After all necessary string manipulations, you have to de-normalize the manipulation results to SBCS/DBCS mixed strings, which can be accepted by the system or by other programs.
Example
Input Data Stream
┌─────┐
┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ │ │ ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│s│s│D 1│D 2│D 3│s│s│ ─>│ │─>│0│s│0│s│D 1│D 2│D 3│0│s│0│s│
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘ │ C │ └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
│ O │ │
│ N │ V
│ V │ ┌───────────────────────────┐
│ E │ │ Processing Data │
│ R │ └───────────────────────────┘
Output Data Stream │ T │ │
│ E │ V
┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ │ R │ ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│s│D 1│s│D 2│D 3│D 4│s│<─│ │<─│0│s│D 1│0│s│D 2│D 3│D 4│0│s│
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘ │ │ └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
└─────┘
where '0' denotes null whose value is 00H.
Note that it is a little bit complex to predicate the final byte length ("final" means "after de─normalization") during manipulation processes.
This technique is available in IBM C language, which supports Wide Character data type.