I very much doubt it's a compiler / IDE problem.
You might have run into thinking it's ASCII, so 1 byte for each character, 4 bytes including termination.
But that unicode string is written as { 0xE2, 0x97, 0x99, 0x20, 0x0A, 0x00}, so 6 bytes, char[4] is the newline.
Anyways there's no reason it wouldn't detect '\n'.
This works as expected, finding it at char[4];
char msg[] = "◙ \n";
uint8_t find_newline(char * s){
uint8_t c=0;
while(*s){
if(*s++ == '\n')
break;
c++;
}
return c;
}