Since piece notation should be lowercase for one side and uppercase for the other, this restricts you from using mixed case piece notation. But since your cards do not represent pieces on one side or the other, you could still use mixed case IDs that otherwise match the piece notation but add some clarification on whether neighboring letters mean two different things or mean one thing together. For example, you might use C for the Camel, Cn for the Cannon, and CNZ (Camel+Knight+Zebra) for the Buffalo.
I hadn't considered that any given piece would have only one in the game (at a time), which does open things up a little. I couldn't have a CN and a Cn, but I could do what you describe, which could be helpful.
I hadn't considered that any given piece would have only one in the game (at a time), which does open things up a little. I couldn't have a CN and a Cn, but I could do what you describe, which could be helpful.
OK, that gives me a couple of ideas.