responseSerializationFailed(reason:
Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(error:
Error Domain=NSCocoaErrorDomain Code=3840 "Unexpected end of file during string parse
(expected low-surrogate code point but did not find one). around line 1, column 340."
UserInfo={NSDebugDescription=Unexpected end of file during string parse
(expected low-surrogate code point but did not find one). around line 1, column 340.,
NSJSONSerializationErrorIndex=340}))
() $R0 = {}
아이폰에서 이모지
뒷글자 3자리를 자르는 작업시, 이모지가 정상적으로 완성되지 않음. 웹, 안드로이드는 깨진글자가 그대로 동작하나, 아이폰은 json 자체가 파싱이 안되는 현상이 있음.
자바 1.8부터 제공하는
new StringBuilder().appendCodePoint(
emostring.codePointAt(emostring.offsetByCodePoints(0, 1))).toString()
copePointAt을 이용하고자했는데, 그냥 BreakIterator.getCharacterInstance() 를 이용하여 처리했습니다. (회사의 테크리더 팀장님이 공유해주심. )
public class GraphemeStringProxy {
private final String originString;
private final List<String> parsedString;
public GraphemeStringProxy(String originString) {
this.originString = originString;
this.parsedString = splitChars(originString);
}
private List<String> splitChars(String str) {
List<String> parsed = new ArrayList<>();
BreakIterator it = BreakIterator.getCharacterInstance();
it.setText(str);
int index1 = 0;
int index2 = it.next();
while (index2 != BreakIterator.DONE) {
parsed.add(str.substring(index1, index2));
index1 = index2;
index2 = it.next();
}
return parsed;
}
public int length() {
return parsedString.size();
}
public boolean isEmpty() {
return parsedString.isEmpty();
}
public String substring(int startIndex, int endIndex) {
StringBuffer sb = new StringBuffer();
parsedString.stream().skip(startIndex).limit(endIndex - startIndex).forEach(sb::append);
return sb.toString();
}
}
위와 같이 최종적으로 처리함.
글자 수를 정확하게 카운트 하는 법 [참고주소] : https://engineering.linecorp.com/ko/blog/the-7-ways-of-counting-characters/