I think you’re using less-well-supported Unicode values, which don’t always have glyphs for all the code points.
Try the following characters:
- ☐ (0x2610 in Unicode hexadecimal [HTML decimal:
☐
]): an empty (unchecked) checkbox - ☑ (0x2611 [HTML decimal:
☑
]): the checked version of the previous checkbox - ✓ (0x2713 [HTML decimal:
✓
]) - ✔ (0x2714 [HTML decimal:
✔
])
Edit: There seems to be some confusion about the first symbol here, ☐ / 0x2610. This is an empty (unchecked) checkbox, so if you see a box, that’s the way it’s supposed to look. It’s the counterpart to ☑ / 0x2611, which is the checked version.